home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume2 / dungeon / part05 < prev    next >
Encoding:
Internet Message Format  |  1987-09-02  |  56.4 KB

  1. Path: uunet!seismo!ut-sally!im4u!rutgers!mit-eddie!uw-beaver!tektronix!tekgen!tekred!games-request
  2. From: games-request@tekred.TEK.COM
  3. Newsgroups: comp.sources.games
  4. Subject: v02i038:  dungeon - game of adventure, Part05/14
  5. Message-ID: <1561@tekred.TEK.COM>
  6. Date: 1 Sep 87 20:19:28 GMT
  7. Sender: billr@tekred.TEK.COM
  8. Lines: 3050
  9. Approved: billr@tekred.TEK.COM
  10.  
  11. Submitted by: Bill Randle <games-request@tekred.TEK.COM>
  12. Comp.sources.games: Volume 2, Issue 38
  13. Archive-name: dungeon/Part05
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then unpack
  17. # it by saving it into a file and typing "sh file".  To overwrite existing
  18. # files, type "sh file -c".  You can also feed this as standard input via
  19. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  20. # will see the following message at the end:
  21. #        "End of archive 5 (of 7)."
  22. # Contents:  dinit.F dso2.F dsub.F dungeon.6 np3.F objects.h rtext.dat
  23. # Wrapped by billr@tekred on Tue Apr 21 10:24:31 1987
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. if test -f dinit.F -a "${1}" != "-c" ; then 
  26.   echo shar: Will not over-write existing file \"dinit.F\"
  27. else
  28. echo shar: Extracting \"dinit.F\" \(10974 characters\)
  29. sed "s/^X//" >dinit.F <<'END_OF_dinit.F'
  30. X#include "files.h"
  31. X
  32. X#ifndef INDXFILE
  33. X#define INDXFILE '/usr/games/lib/dunlib/dindx.dat'
  34. X#endif
  35. X#ifndef TEXTFILE
  36. X#define TEXTFILE '/usr/games/lib/dunlib/dtext.dat'
  37. X#endif
  38. X#ifndef WIZARDID
  39. X#define WIZARDID 0
  40. X#endif
  41. X
  42. XC INIT-- DUNGEON INITIALIZATION SUBROUTINE
  43. XC
  44. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  45. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  46. XC WRITTEN BY R. M. SUPNIK
  47. XC
  48. XC DECLARATIONS
  49. XC
  50. X    LOGICAL FUNCTION INIT(X)
  51. X    IMPLICIT INTEGER (A-Z)
  52. X#ifndef PDP
  53. X    LOGICAL PROTCT
  54. X    INTEGER DATARRY(3)
  55. X#endif PDP
  56. X#include "parser.h"
  57. X#include "gamestate.h"
  58. X#include "state.h"
  59. X#include "screen.h"
  60. X#include "mindex.h"
  61. XC
  62. XC MISCELLANEOUS VARIABLES
  63. XC
  64. X    COMMON /STAR/ MBASE,STRBIT
  65. X    COMMON /VERS/ VMAJ,VMIN,VEDIT
  66. X    COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC
  67. X#include "io.h"
  68. X#include "debug.h"
  69. X    COMMON /HYPER/ HFACTR
  70. X#include "rooms.h"
  71. X#include "rflag.h"
  72. X#include "rindex.h"
  73. X#include "exits.h"
  74. X#include "curxt.h"
  75. X#include "xpars.h"
  76. X#include "objects.h"
  77. X#include "oindex.h"
  78. X#include "clock.h"
  79. X#include "villians.h"
  80. X#include "advers.h"
  81. X#include "flags.h"
  82. XC INIT, PAGE 2
  83. XC
  84. X#ifndef PDP
  85. XC FIRST CHECK FOR PROTECTION VIOLATION
  86. XC
  87. X    IF(PROTCT(X)) GO TO 10000
  88. XC                        !PROTECTION VIOLATION?
  89. X    PRINT 10100
  90. X10100    FORMAT(' There appears before you a threatening figure clad '
  91. X&    'all over'/' in heavy black armor.  His legs seem like the '
  92. X&    'massive trunk'/' of the oak tree.  His broad shoulders and '
  93. X&    'helmeted head loom'/' high over your own puny frame, and '
  94. X&    'you realize that his powerful'/' arms could easily crush the '
  95. X&    'very life from your body.  There'/' hangs from his belt a '
  96. X&    'veritable arsenal of deadly weapons:'/' sword, mace, ball '
  97. X&    'and chain, dagger, lance, and trident.'/' He speaks with a '
  98. X&    'commanding voice:'//20X,'"You shall not pass."'//' As '
  99. X&    'he grabs you by the neck all grows dim about you.')
  100. X    CALL EXIT
  101. X#endif PDP
  102. XC
  103. XC NOW START INITIALIZATION PROPER
  104. XC
  105. X#ifdef PDP
  106. XC
  107. XC   Note: arrays FLAGS & SWITCH are initialized in the following
  108. XC           DATA statements, instead of using DO loops and assignments
  109. XC           as used before.  This saves some code space.
  110. XC
  111. X    DATA FLAGS/.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
  112. X&           .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
  113. X&           .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
  114. X&            .TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.TRUE.,
  115. X&           .FALSE.,.FALSE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.,
  116. X&           .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
  117. X&           .FALSE.,.FALSE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.,
  118. X&            .TRUE.,.FALSE.,.FALSE.,.FALSE./
  119. XC
  120. X    DATA SWITCH/0,0,0,0,0,0,0,0,0,
  121. X&            4,0,270,0,0,0,0,0,
  122. X&            1,1,0,0,10/
  123. XC
  124. XC   Note: SWITCH(13) or MLOC is initialized equal to MRB later.
  125. XC
  126. XC
  127. X    DATA LTSHFT/10/
  128. X    DATA EGSCOR/0/
  129. X    DATA EGMXSC/0/
  130. X    DATA MXLOAD/100/
  131. X    DATA RWSCOR/0/
  132. X    DATA DEATHS/0/
  133. X    DATA MOVES/0/
  134. X    DATA PLTIME/0/
  135. X    DATA MUNGRM/0/
  136. X    DATA HS/0/
  137. X    DATA PRSA/0/
  138. X    DATA PRSI/0/
  139. X    DATA PRSO/0/
  140. X    DATA PRSCON/1/
  141. X    DATA OFLAG/0/
  142. X    DATA OACT/0/
  143. X    DATA OSLOT/0/
  144. X    DATA OPREP/0/
  145. X    DATA ONAME/0/
  146. X    DATA THFFLG/.FALSE./
  147. X    DATA THFACT/.TRUE./
  148. X    DATA SWDACT/.FALSE./
  149. X    DATA SWDSTA/0/
  150. XC
  151. X    DATA RECNO/1/
  152. X    DATA MBASE/0/
  153. X    DATA INPCH/5/
  154. X    DATA OUTCH/5/
  155. X    DATA DBCH/2/
  156. XC
  157. XC INIT, PAGE 3
  158. XC
  159. XC
  160. X    DATA DBGFLG/0/
  161. X    DATA PRSFLG/0/
  162. X    DATA GDTFLG/0/
  163. XC
  164. X    FROMDR=0
  165. X    SCOLRM=0
  166. X    SCOLAC=0
  167. X    INIT=.FALSE.        
  168. X    MLOC=MRB
  169. XC
  170. XC INIT, PAGE 4
  171. XC
  172. XC NOW RESTORE FROM EXISTING INDEX FILE.
  173. XC
  174. X    call intrd(i)
  175. X    call intrd(j)
  176. X    call intrd(k)
  177. X    IF((I.NE.VMAJ).OR.(J.NE.VMIN))
  178. X&        GO TO 1925            
  179. XC
  180. X    call intrd(MXSCOR)
  181. X    call intrd(STRBIT)
  182. X    call intrd(EGMXSC)
  183. XC
  184. X    call intrd(RLNT)
  185. X    call intrd(RDESC2)
  186. X    call aryrd(200,RDESC1)
  187. X    call aryrd(200,REXIT)
  188. X    call aryrd(200,RACTIO)
  189. X    call aryrd(200,RVAL)
  190. X    call aryrd(200,RFLAG)
  191. XC
  192. X    call intrd(XLNT)
  193. X    call aryrd(900,TRAVEL)
  194. X    call intrd(OLNT)
  195. X    call aryrd(220,ODESC1)
  196. X    call aryrd(220,ODESC2)
  197. X    call aryrd(220,ODESCO)
  198. X    call aryrd(220,OACTIO)
  199. X    call aryrd(220,OFLAG1)
  200. X    call aryrd(220,OFLAG2)
  201. X    call aryrd(220,OFVAL)
  202. X    call aryrd(220,OTVAL)
  203. X    call aryrd(220,OSIZE)
  204. X    call aryrd(220,OCAPAC)
  205. X    call aryrd(220,OROOM)
  206. X    call aryrd(220,OADV)
  207. X    call aryrd(220,OCAN)
  208. X    call aryrd(220,OREAD)
  209. XC
  210. X    call intrd(R2LNT)
  211. X    call aryrd(20,O2)
  212. X    call aryrd(20,R2)
  213. XC
  214. X    call intrd(CLNT)
  215. X    call aryrd(25,CTICK)
  216. X    call aryrd(25,CACTIO)
  217. XC
  218. X    do 990 i=1,25
  219. X    cflag(i)=.TRUE.
  220. X    call logrd(j)
  221. X    if(j.EQ.0) CFLAG(i)=.FALSE.
  222. X990    continue
  223. XC
  224. X    call intrd(VLNT)
  225. X    call aryrd(4,VILLNS)
  226. X    call aryrd(4,VPROB)
  227. X    call aryrd(4,VOPPS)
  228. X    call aryrd(4,VBEST)
  229. X    call aryrd(4,VMELEE)
  230. XC
  231. X    call intrd(ALNT)
  232. X    call aryrd(4,AROOM)
  233. X    call aryrd(4,ASCORE)
  234. X    call aryrd(4,AVEHIC)
  235. X    call aryrd(4,AOBJ)
  236. X    call aryrd(4,AACTIO)
  237. X    call aryrd(4,ASTREN)
  238. X    call aryrd(4,AFLAG)
  239. XC
  240. X    call intrd(MBASE)
  241. X    call intrd(MLNT)
  242. XC
  243. XC   The RTEXT array is not used here, and isn't read (it's used
  244. XC   in "speak.F")
  245. XC
  246. X    call initnd
  247. XC
  248. XC INIT, PAGE 5
  249. XC
  250. XC THE INTERNAL DATA BASE IS NOW ESTABLISHED.
  251. XC SET UP TO PLAY THE GAME.
  252. XC
  253. X1025    CALL ITIME(SHOUR,SMIN,SSEC)        
  254. X    CALL INIRND(or(SHOUR,or(SMIN,SSEC)))
  255. XC
  256. X    WINNER=PLAYER
  257. X    LASTIT=AOBJ(PLAYER)
  258. X    HERE=AROOM(WINNER)
  259. X    THFPOS=OROOM(THIEF)
  260. X    BLOC=OROOM(BALLO)
  261. X    INIT=.TRUE.
  262. X#ifdef debug
  263. XC
  264. XC    Normally, PRSFLG is setable in gdt to allow seeing various
  265. XC    parse results.  Since the pdp version does not have gdt,
  266. XC    PRSFLG is set to show full debugging info when debug is enabled.
  267. XC
  268. X    PRSFLG=65535
  269. X#endif debug
  270. XC
  271. XC
  272. X    RETURN
  273. XC INIT, PAGE 6
  274. XC
  275. XC ERRORS-- INIT FAILS.
  276. XC
  277. X1925    continue
  278. X    END
  279. X#else PDP
  280. X10000    INIT=.FALSE.
  281. XC                        !ASSUME INIT FAILS.
  282. X    MMAX=1050
  283. XC                        !SET UP ARRAY LIMITS.
  284. X    OMAX=220
  285. X    RMAX=200
  286. X    VMAX=4
  287. X    AMAX=4
  288. X    CMAX=25
  289. X    FMAX=46
  290. X    SMAX=22
  291. X    XMAX=900
  292. X    R2MAX=20
  293. X    DIRMAX=15
  294. XC
  295. X    MLNT=0
  296. XC                        !INIT ARRAY COUNTERS.
  297. X    OLNT=0
  298. X    RLNT=0
  299. X    VLNT=0
  300. X    ALNT=0
  301. X    CLNT=0
  302. X    XLNT=1
  303. X    R2LNT=0
  304. XC
  305. X    LTSHFT=10
  306. XC                        !SET UP STATE VARIABLES.
  307. X    MXSCOR=LTSHFT
  308. X    EGSCOR=0
  309. X    EGMXSC=0
  310. X    MXLOAD=100
  311. X    RWSCOR=0
  312. X    DEATHS=0
  313. X    MOVES=0
  314. X    PLTIME=0
  315. X    MUNGRM=0
  316. X    HS=0
  317. X    PRSA=0
  318. XC                        !CLEAR PARSE VECTOR.
  319. X    PRSI=0
  320. X    PRSO=0
  321. X    PRSCON=1
  322. X    OFLAG=0
  323. XC                        !CLEAR ORPHANS.
  324. X    OACT=0
  325. X    OSLOT=0
  326. X    OPREP=0
  327. X    ONAME=0
  328. X    THFFLG=.FALSE.
  329. XC                        !THIEF NOT INTRODUCED BUT
  330. X    THFACT=.TRUE.
  331. XC                        !IS ACTIVE.
  332. X    SWDACT=.FALSE.
  333. XC                        !SWORD IS INACTIVE.
  334. X    SWDSTA=0
  335. XC                        !SWORD IS OFF.
  336. XC
  337. X    RECNO=1
  338. XC                        !INIT DB FILE POINTER.
  339. X    MBASE=0
  340. XC                        !INIT MELEE BASE.
  341. XC   LOGICAL UNIT NRS: 5=STDIN, 6=STDOUT
  342. X    INPCH=5
  343. XC                        !TTY INPUT
  344. X    OUTCH=6
  345. X    DBCH=2
  346. XC                        !DATA BASE.
  347. XC INIT, PAGE 3
  348. XC
  349. XC INIT ALL ARRAYS.
  350. XC
  351. X    DO 5 I=1,CMAX
  352. XC                        !CLEAR CLOCK EVENTS
  353. X      CFLAG(I)=.FALSE.
  354. X      CTICK(I)=0
  355. X      CACTIO(I)=0
  356. X5    CONTINUE
  357. XC
  358. X    DO 10 I=1,FMAX
  359. XC                        !CLEAR FLAGS.
  360. X      FLAGS(I)=.FALSE.
  361. X10    CONTINUE
  362. X    BUOYF=.TRUE.
  363. XC                        !SOME START AS TRUE.
  364. X    EGYPTF=.TRUE.
  365. X    CAGETF=.TRUE.
  366. X    MR1F=.TRUE.
  367. X    MR2F=.TRUE.
  368. X    FOLLWF=.TRUE.
  369. X    DO 12 I=1,SMAX
  370. XC                        !CLEAR SWITCHES.
  371. X      SWITCH(I)=0
  372. X12    CONTINUE
  373. X    ORMTCH=4
  374. XC                        !NUMBER OF MATCHES.
  375. X    LCELL=1
  376. X    PNUMB=1
  377. X    MDIR=270
  378. X    MLOC=MRB
  379. X    CPHERE=10
  380. XC
  381. X    DO 15 I=1,R2MAX
  382. XC                        !CLEAR ROOM 2 ARRAY.
  383. X      RROOM2(I)=0
  384. X      OROOM2(I)=0
  385. X15    CONTINUE
  386. XC
  387. X    DO 20 I=1,XMAX
  388. XC                        !CLEAR TRAVEL ARRAY.
  389. X      TRAVEL(I)=0
  390. X20    CONTINUE
  391. XC
  392. X    DO 30 I=1,VMAX
  393. XC                        !CLEAR VILLAINS ARRAYS.
  394. X      VOPPS(I)=0
  395. X      VPROB(I)=0
  396. X      VILLNS(I)=0
  397. X      VBEST(I)=0
  398. X      VMELEE(I)=0
  399. X30    CONTINUE
  400. XC
  401. X    DO 40 I=1,OMAX
  402. XC                        !CLEAR OBJECT ARRAYS.
  403. X      ODESC1(I)=0
  404. X      ODESC2(I)=0
  405. X      ODESCO(I)=0
  406. X      OREAD(I)=0
  407. X      OACTIO(I)=0
  408. X      OFLAG1(I)=0
  409. X      OFLAG2(I)=0
  410. X      OFVAL(I)=0
  411. X      OTVAL(I)=0
  412. X      OSIZE(I)=0
  413. X      OCAPAC(I)=0
  414. X      OCAN(I)=0
  415. X      OADV(I)=0
  416. X      OROOM(I)=0
  417. X40    CONTINUE
  418. XC
  419. X    RDESC2=0
  420. XC                        !CLEAR DESC BASE PTR.
  421. X    DO 50 I=1,RMAX
  422. XC                        !CLEAR ROOM ARRAYS.
  423. X      RDESC1(I)=0
  424. X      RACTIO(I)=0
  425. X      RFLAG(I)=0
  426. X      RVAL(I)=0
  427. X      REXIT(I)=0
  428. X50    CONTINUE
  429. XC
  430. X    DO 60 I=1,MMAX
  431. XC                        !CLEAR MESSAGE DIRECTORY.
  432. X      RTEXT(I)=0
  433. X60    CONTINUE
  434. XC
  435. X    DO 70 I=1,AMAX
  436. XC                        !CLEAR ADVENTURER'S ARRAYS.
  437. X      AROOM(I)=0
  438. X      ASCORE(I)=0
  439. X      AVEHIC(I)=0
  440. X      AOBJ(I)=0
  441. X      AACTIO(I)=0
  442. X      ASTREN(I)=0
  443. X      AFLAG(I)=0
  444. X70    CONTINUE
  445. XC
  446. X    DBGFLG=0
  447. X    PRSFLG=0
  448. X    GDTFLG=0
  449. XC
  450. XC allow setting gdtflg true if user id matches wizard id
  451. XC this way, the wizard doesn't have to recompile to use gdt
  452. XC
  453. X    if (getuid() .eq. WIZARDID) gdtflg=1
  454. XC
  455. X    FROMDR=0
  456. XC                        !INIT SCOL GOODIES.
  457. X    SCOLRM=0
  458. X    SCOLAC=0
  459. XC INIT, PAGE 4
  460. XC
  461. XC NOW RESTORE FROM EXISTING INDEX FILE.
  462. XC
  463. X    OPEN(UNIT=1,file=INDXFILE,status='OLD',
  464. X&        FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900)
  465. X    READ(1,130) I,J,K
  466. XC                        !GET VERSION.
  467. X    IF((I.NE.VMAJ).OR.(J.NE.VMIN))
  468. X&        GO TO 1925
  469. X
  470. X    OPEN(UNIT=DBCH,file=TEXTFILE,status='OLD',
  471. X&        FORM='UNFORMATTED',ACCESS='DIRECT',
  472. X&        recl=76,ERR=1950)
  473. X
  474. X#ifdef debug
  475. X    PRINT 150
  476. X150    FORMAT(' RESTORING FROM "dindx.dat"')
  477. X#endif debug
  478. X    READ(1,130) MXSCOR,STRBIT,EGMXSC
  479. X    READ(1,130) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG
  480. X    READ(1,130) XLNT,TRAVEL
  481. X    READ(1,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
  482. X&        OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
  483. X&        OREAD
  484. X    READ(1,130) R2LNT,OROOM2,RROOM2
  485. X    READ(1,130) CLNT,CTICK,CACTIO
  486. X    READ(1,135) CFLAG
  487. X    READ(1,130) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE
  488. X    READ(1,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
  489. X    READ(1,130) MBASE,MLNT,RTEXT
  490. XC
  491. X    CLOSE(1)
  492. X    GO TO 1025
  493. XC                        !INIT DONE.
  494. XC
  495. XC 130    FORMAT(I8)
  496. X130    FORMAT(I6)
  497. X135    FORMAT(L4)
  498. XC INIT, PAGE 5
  499. XC
  500. XC THE INTERNAL DATA BASE IS NOW ESTABLISHED.
  501. XC SET UP TO PLAY THE GAME.
  502. XC
  503. X1025    CALL ITIME(SHOUR,SMIN,SSEC)
  504. XC                        !GET TIME AND DATE.
  505. XC    CALL IDATE(I,J,K)
  506. X    CALL IDATE(DATARRY(1))
  507. X    CALL INIRND(or(DATARRY(1),or(DATARRY(2),DATARRY(3))),
  508. X&        or(SHOUR,or(SMIN,SSEC)))
  509. XC
  510. X    WINNER=PLAYER
  511. X    LASTIT=AOBJ(PLAYER)
  512. X    HERE=AROOM(WINNER)
  513. X    THFPOS=OROOM(THIEF)
  514. X    BLOC=OROOM(BALLO)
  515. X    INIT=.TRUE.
  516. XC
  517. X#ifdef debug
  518. X    PRINT 1050,RLNT,RMAX,XLNT,XMAX,OLNT,OMAX,MLNT,MMAX,
  519. X&      VLNT,VMAX,ALNT,AMAX,CLNT,CMAX,R2LNT,R2MAX
  520. X1050    FORMAT(' USED:'/1X,I5,' OF',I5,' ROOMS'/
  521. X&      1X,I5,' OF',I5,' EXITS'/
  522. X&      1X,I5,' OF',I5,' OBJECTS'/
  523. X&      1X,I5,' OF',I5,' MESSAGES'/
  524. X&      1X,I5,' OF',I5,' VILLAINS'/
  525. X&      1X,I5,' OF',I5,' ADVENTURERS'/
  526. X&      1X,I5,' OF',I5,' CLOCK EVENTS'/
  527. X&      1X,I5,' OF',I5,' ROOM2 SLOTS')
  528. X    PRINT 1150,MXSCOR,EGMXSC,RECNO,RDESC2,MBASE,STRBIT
  529. X1150    FORMAT(' MAX SCORE=',I5/' EG SCORE=',I5/
  530. X&      ' MAX RECNO=',I5/' RDESC2 BASE=',I5/
  531. X&      ' MELEE START=',I5/' STAR MASK=',I7)
  532. X    PAUSE 1
  533. X#endif debug
  534. XC
  535. X    RETURN
  536. XC INIT, PAGE 6
  537. XC
  538. XC ERRORS-- INIT FAILS.
  539. XC
  540. X1900    PRINT 910
  541. X    PRINT 980
  542. X    RETURN
  543. X1925    PRINT 920,I,J,K,VMAJ,VMIN,VEDIT
  544. X    PRINT 980
  545. X    RETURN
  546. X1950    PRINT 960
  547. X    PRINT 980
  548. X    RETURN
  549. X910    FORMAT(' I can''t open ',INDXFILE,'.')
  550. X920    FORMAT(' "dindx.dat" is version ',I1,'.',I1,A1,'.'/
  551. X&        ' I require version ',I1,'.',I1,A1,'.')
  552. X960    FORMAT(' I can''t open ',TEXTFILE,'.')
  553. X980    FORMAT(' Suddenly a sinister, wraithlike figure appears before '
  554. X&    'you,'/' seeming to float in the air.  In a low, sorrowful voice'
  555. X&    ' he says,'/' "Alas, the very nature of the world has changed, '
  556. X&    'and the dungeon'/' cannot be found.  All must now pass away."'
  557. X&    '  Raising his oaken staff'/' in farewell, he fades into the '
  558. X&    'spreading darkness.  In his place'/' appears a tastefully '
  559. X&    'lettered sign reading:'//23X,'INITIALIZATION FAILURE'//
  560. X&    ' The darkness becomes all encompassing, and your vision fails.')
  561. XC
  562. X    END
  563. XC PROTCT-- CHECK FOR USER VIOLATION
  564. XC
  565. XC THIS ROUTINE SHOULD BE MODIFIED IF YOU WISH TO ADD SYSTEM
  566. XC DEPENDANT PROTECTION AGAINST ABUSE.
  567. XC
  568. XC AT THE MOMENT, PLAY IS PERMITTED UNDER ALL CIRCUMSTANCES.
  569. XC
  570. X    LOGICAL FUNCTION PROTCT(X)
  571. X    IMPLICIT INTEGER(A-Z)
  572. XC
  573. X    PROTCT=.TRUE.
  574. X    RETURN
  575. X    END
  576. X#endif PDP
  577. END_OF_dinit.F
  578. if test 10974 -ne `wc -c <dinit.F`; then
  579.     echo shar: \"dinit.F\" unpacked with wrong size!
  580. fi
  581. # end of overwriting check
  582. fi
  583. if test -f dso2.F -a "${1}" != "-c" ; then 
  584.   echo shar: Will not over-write existing file \"dso2.F\"
  585. else
  586. echo shar: Extracting \"dso2.F\" \(3263 characters\)
  587. sed "s/^X//" >dso2.F <<'END_OF_dso2.F'
  588. XC MOVETO- MOVE PLAYER TO NEW ROOM
  589. XC
  590. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  591. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  592. XC WRITTEN BY R. M. SUPNIK
  593. XC
  594. XC DECLARATIONS
  595. XC
  596. X    LOGICAL FUNCTION MOVETO(NR,WHO)
  597. X    IMPLICIT INTEGER (A-Z)
  598. X    LOGICAL NLV,LHR,LNR
  599. X#include "gamestate.h"
  600. X#include "rooms.h"
  601. X#include "rflag.h"
  602. X#include "objects.h"
  603. X#include "oindex.h"
  604. X#include "advers.h"
  605. XC MOVETO, PAGE 2
  606. XC
  607. X    MOVETO=.FALSE.
  608. XC                        !ASSUME FAILS.
  609. X    LHR=and(RFLAG(HERE),RLAND).NE.0
  610. X    LNR=and(RFLAG(NR),RLAND).NE.0
  611. X    J=AVEHIC(WHO)
  612. XC                        !HIS VEHICLE
  613. XC
  614. X    IF(J.NE.0) GO TO 100
  615. XC                        !IN VEHICLE?
  616. X    IF(LNR) GO TO 500
  617. XC                        !NO, GOING TO LAND?
  618. X    CALL RSPEAK(427)
  619. XC                        !CAN'T GO WITHOUT VEHICLE.
  620. X    RETURN
  621. XC
  622. X100    BITS=0
  623. XC                        !ASSUME NOWHERE.
  624. X    IF(J.EQ.RBOAT) BITS=RWATER
  625. XC                        !IN BOAT?
  626. X    IF(J.EQ.BALLO) BITS=RAIR
  627. XC                        !IN BALLOON?
  628. X    IF(J.EQ.BUCKE) BITS=RBUCK
  629. XC                        !IN BUCKET?
  630. X    NLV=and(RFLAG(NR),BITS).EQ.0
  631. X    IF((.NOT.LNR .AND.NLV) .OR.
  632. X&        (LNR.AND.LHR.AND.NLV.AND.(BITS.NE.RLAND)))
  633. X&        GO TO 800
  634. XC
  635. X500    MOVETO=.TRUE.
  636. XC                        !MOVE SHOULD SUCCEED.
  637. X    IF(and(RFLAG(NR),RMUNG).EQ.0) GO TO 600
  638. X    CALL RSPEAK(RRAND(NR))
  639. XC                        !YES, TELL HOW.
  640. X    RETURN
  641. XC
  642. X600    IF(WHO.NE.PLAYER) CALL NEWSTA(AOBJ(WHO),0,NR,0,0)
  643. X    IF(J.NE.0) CALL NEWSTA(J,0,NR,0,0)
  644. X    HERE=NR
  645. X    AROOM(WHO)=HERE
  646. X    CALL SCRUPD(RVAL(NR))
  647. XC                        !SCORE ROOM
  648. X    RVAL(NR)=0
  649. X    RETURN
  650. XC
  651. X800    CALL RSPSUB(428,ODESC2(J))
  652. XC                        !WRONG VEHICLE.
  653. X    RETURN
  654. X    END
  655. XC SCORE-- PRINT OUT CURRENT SCORE
  656. XC
  657. XC DECLARATIONS
  658. XC
  659. X    SUBROUTINE SCORE(FLG)
  660. X    IMPLICIT INTEGER (A-Z)
  661. X    LOGICAL FLG
  662. X    INTEGER RANK(10),ERANK(5)
  663. X#include "gamestate.h"
  664. X#include "state.h"
  665. XC
  666. X    COMMON /CHAN/ INPCH,OUTCH,DBCH
  667. X#include "advers.h"
  668. X#include "flags.h"
  669. XC
  670. XC FUNCTIONS AND DATA
  671. XC
  672. X    DATA RANK/20,19,18,16,12,8,4,2,1,0/
  673. X    DATA ERANK/20,15,10,5,0/
  674. XC SCORE, PAGE 2
  675. XC
  676. X    AS=ASCORE(WINNER)
  677. XC
  678. X    IF(ENDGMF) GO TO 60
  679. XC                        !ENDGAME?
  680. X#ifdef PDP
  681. X    call pscore(AS,MXSCOR,MOVES)
  682. X#else
  683. X     IF(FLG) WRITE(OUTCH,100)
  684. X     IF(.NOT.FLG) WRITE(OUTCH,110)
  685. X     IF(MOVES.NE.1) WRITE(OUTCH,120) AS,MXSCOR,MOVES
  686. X     IF(MOVES.EQ.1) WRITE(OUTCH,130) AS,MXSCOR,MOVES
  687. X#endif PDP
  688. XC
  689. X    DO 10 I=1,10
  690. X      IF((AS*20/MXSCOR).GE.RANK(I)) GO TO 50
  691. X10    CONTINUE
  692. X50    CALL RSPEAK(484+I)
  693. X    RETURN
  694. XC
  695. X#ifdef PDP
  696. X60    continue
  697. X    call pscore(EGSCOR,EGMXSC,MOVES)
  698. X#else
  699. X60    IF(FLG) WRITE(OUTCH,140)
  700. X     IF(.NOT.FLG) WRITE(OUTCH,150)
  701. X     WRITE(OUTCH,120) EGSCOR,EGMXSC,MOVES
  702. X#endif PDP
  703. X    DO 70 I=1,5
  704. X      IF((EGSCOR*20/EGMXSC).GE.ERANK(I)) GO TO 80
  705. X70    CONTINUE
  706. X80    CALL RSPEAK(786+I)
  707. X    RETURN
  708. X
  709. X#ifndef PDP
  710. X100    FORMAT(' Your score would be',$)
  711. X110    FORMAT(' Your score is',$)
  712. X120    FORMAT('+',I4,' [total of',I4,' points], in',I5,' moves.')
  713. X130    FORMAT('+',I4,' [total of',I4,' points], in',I5,' move.')
  714. X140    FORMAT(' Your score in the endgame would be',$)
  715. X150    FORMAT(' Your score in the endgame is',$)
  716. X#endif PDP
  717. XC
  718. X    END
  719. XC SCRUPD- UPDATE WINNER'S SCORE
  720. XC
  721. XC DECLARATIONS
  722. XC
  723. X    SUBROUTINE SCRUPD(N)
  724. X    IMPLICIT INTEGER (A-Z)
  725. X#include "gamestate.h"
  726. X#include "state.h"
  727. X#include "clock.h"
  728. X#include "advers.h"
  729. X#include "flags.h"
  730. XC
  731. X    IF(ENDGMF) GO TO 100
  732. XC                        !ENDGAME?
  733. X    ASCORE(WINNER)=ASCORE(WINNER)+N
  734. XC                        !UPDATE SCORE
  735. X    RWSCOR=RWSCOR+N
  736. XC                        !UPDATE RAW SCORE
  737. X    IF(ASCORE(WINNER).LT.(MXSCOR-(10*DEATHS))) RETURN
  738. X    CFLAG(CEVEGH)=.TRUE.
  739. XC                        !TURN ON END GAME
  740. X    CTICK(CEVEGH)=15
  741. X    RETURN
  742. XC
  743. X100    EGSCOR=EGSCOR+N
  744. XC                        !UPDATE EG SCORE.
  745. X    RETURN
  746. X    END
  747. END_OF_dso2.F
  748. if test 3263 -ne `wc -c <dso2.F`; then
  749.     echo shar: \"dso2.F\" unpacked with wrong size!
  750. fi
  751. # end of overwriting check
  752. fi
  753. if test -f dsub.F -a "${1}" != "-c" ; then 
  754.   echo shar: Will not over-write existing file \"dsub.F\"
  755. else
  756. echo shar: Extracting \"dsub.F\" \(10390 characters\)
  757. sed "s/^X//" >dsub.F <<'END_OF_dsub.F'
  758. XC RESIDENT SUBROUTINES FOR DUNGEON
  759. XC
  760. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  761. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  762. XC WRITTEN BY R. M. SUPNIK
  763. XC
  764. XC RSPEAK-- OUTPUT RANDOM MESSAGE ROUTINE
  765. XC
  766. XC CALLED BY--
  767. XC
  768. XC    CALL RSPEAK(MSGNUM)
  769. XC
  770. X    SUBROUTINE RSPEAK(N)
  771. X    IMPLICIT INTEGER(A-Z)
  772. XC
  773. X    CALL RSPSB2(N,0,0)
  774. X    RETURN
  775. X    END
  776. XC RSPSUB-- OUTPUT RANDOM MESSAGE WITH SUBSTITUTABLE ARGUMENT
  777. XC
  778. XC CALLED BY--
  779. XC
  780. XC    CALL RSPSUB(MSGNUM,SUBNUM)
  781. XC
  782. X    SUBROUTINE RSPSUB(N,S1)
  783. X    IMPLICIT INTEGER(A-Z)
  784. XC
  785. X    CALL RSPSB2(N,S1,0)
  786. X    RETURN
  787. X    END
  788. XC RSPSB2-- OUTPUT RANDOM MESSAGE WITH UP TO TWO SUBSTITUTABLE ARGUMENTS
  789. XC
  790. XC CALLED BY--
  791. XC
  792. XC    CALL RSPSB2(MSGNUM,SUBNUM1,SUBNUM2)
  793. XC
  794. X    SUBROUTINE    RSPSB2(N,S1,S2)
  795. X    IMPLICIT      INTEGER(A-Z)
  796. X#ifndef PDP
  797. X    CHARACTER*74  B1,B2,B3
  798. X    INTEGER*2     OLDREC,NEWREC,JREC
  799. X#endif PDP
  800. XC
  801. XC DECLARATIONS
  802. XC
  803. X#include "gamestate.h"
  804. XC
  805. X#ifdef PDP
  806. X    TELFLG=.TRUE.
  807. XC
  808. XC    use C routine to access data base
  809. XC
  810. X    call    rspsb3(N,S1,S2)
  811. X    return
  812. X#else
  813. X#include "mindex.h"
  814. X#include "io.h"
  815. XC
  816. XC CONVERT ALL ARGUMENTS FROM DICTIONARY NUMBERS (IF POSITIVE)
  817. XC TO ABSOLUTE RECORD NUMBERS.
  818. XC
  819. X    X=N
  820. XC                        !SET UP WORK VARIABLES.
  821. X    Y=S1
  822. X    Z=S2
  823. X    IF(X.GT.0) X=RTEXT(X)
  824. XC                        !IF >0, LOOK UP IN RTEXT.
  825. X    IF(Y.GT.0) Y=RTEXT(Y)
  826. X    IF(Z.GT.0) Z=RTEXT(Z)
  827. X    X=IABS(X)
  828. XC                        !TAKE ABS VALUE.
  829. X    Y=IABS(Y)
  830. X    Z=IABS(Z)
  831. X    IF(X.EQ.0) RETURN
  832. XC                        !ANYTHING TO DO?
  833. X    TELFLG=.TRUE.
  834. XC                        !SAID SOMETHING.
  835. XC
  836. X    READ(UNIT=DBCH,REC=X) OLDREC,B1
  837. XC
  838. X100    DO 150 I=1,74
  839. X      X1=and(X,31)+I
  840. X      B1(I:I)=char(xor(ichar(B1(I:I)),X1))
  841. X150    CONTINUE
  842. XC
  843. X200    IF(Y.EQ.0) GO TO 400
  844. XC                        !ANY SUBSTITUTABLE?
  845. X    DO 300 I=1,74
  846. XC                        !YES, LOOK FOR #.
  847. X      IF(B1(I:I).EQ.'#') GO TO 1000
  848. X300    CONTINUE
  849. XC
  850. X400    DO 500 I=74,1,-1
  851. XC                        !BACKSCAN FOR BLANKS.
  852. X      IF(B1(I:I).NE.' ') GO TO 600
  853. X500    CONTINUE
  854. XC
  855. X600    WRITE(OUTCH,650) (B1(J:J),J=1,I)
  856. X650    FORMAT(1X,74A1)
  857. X    X=X+1
  858. XC                        !ON TO NEXT RECORD.
  859. X    READ(UNIT=DBCH,REC=X) NEWREC,B1
  860. X    IF(OLDREC.EQ.NEWREC) GO TO 100
  861. XC                        !CONTINUATION?
  862. X    RETURN
  863. XC                        !NO, EXIT.
  864. XC
  865. XC SUBSTITUTION WITH SUBSTITUTABLE AVAILABLE.
  866. XC I IS INDEX OF # IN B1.
  867. XC Y IS NUMBER OF RECORD TO SUBSTITUTE.
  868. XC
  869. XC PROCEDURE:
  870. XC   1) COPY REST OF B1 TO B2
  871. XC   2) READ SUBSTITUTABLE OVER B1
  872. XC   3) RESTORE TAIL OF ORIGINAL B1
  873. XC
  874. XC THE IMPLICIT ASSUMPTION HERE IS THAT THE SUBSTITUTABLE STRING
  875. XC IS VERY SHORT (i.e. MUCH LESS THAN ONE RECORD).
  876. XC
  877. X1000    K2=1
  878. XC                        !TO
  879. X    DO 1100 K1=I+1,74
  880. XC                        !COPY REST OF B1.
  881. X      B2(K2:K2)=B1(K1:K1)
  882. X      K2=K2+1
  883. X1100    CONTINUE
  884. XC
  885. XC   READ SUBSTITUTE STRING INTO B3, AND DECRYPT IT:
  886. XC
  887. X    READ(UNIT=DBCH,REC=Y) JREC,B3
  888. X    DO 1150 K1=1,74
  889. X      X1=and(Y,31)+K1
  890. X      B3(K1:K1)=char(xor(ICHAR(B3(K1:K1)),X1))
  891. X1150    CONTINUE
  892. XC
  893. XC   FILL REMAINDER OF B1 WITH CHARACTERS FROM B3:
  894. XC
  895. X    K2=1
  896. X    DO 1180 K1=I,74
  897. X      B1(K1:K1)=B3(K2:K2)
  898. X      K2=K2+1
  899. X1180    CONTINUE
  900. XC
  901. XC   FIND END OF SUBSTITUTE STRING IN B1:
  902. XC
  903. X    DO 1200 J=74,1,-1
  904. XC                        !ELIM TRAILING BLANKS.
  905. X      IF(B1(J:J).NE.' ') GO TO 1300
  906. X1200    CONTINUE
  907. XC
  908. XC   PUT TAIL END OF B1 (NOW IN B2) BACK INTO B1 AFTER SUBSTITUTE STRING:
  909. XC
  910. X1300    K1=1
  911. XC                        !FROM
  912. X    DO 1400 K2=J+1,74
  913. XC                        !COPY REST OF B1 BACK.
  914. X      B1(K2:K2)=B2(K1:K1)
  915. X      K1=K1+1
  916. X1400    CONTINUE
  917. XC
  918. X    Y=Z
  919. XC                        !SET UP FOR NEXT
  920. X    Z=0
  921. XC                        !SUBSTITUTION AND
  922. X    GO TO 200
  923. XC                        !RECHECK LINE.
  924. X#endif PDP
  925. XC
  926. X    END
  927. XC OBJACT-- APPLY OBJECTS FROM PARSE VECTOR
  928. XC
  929. XC DECLARATIONS
  930. XC
  931. X    LOGICAL FUNCTION OBJACT(X)
  932. X    IMPLICIT INTEGER (A-Z)
  933. X    LOGICAL OAPPLI
  934. X#include "parser.h"
  935. X#include "objects.h"
  936. XC
  937. X    OBJACT=.TRUE.
  938. XC                        !ASSUME WINS.
  939. X    IF(PRSI.EQ.0) GO TO 100
  940. XC                        !IND OBJECT?
  941. X    IF(OAPPLI(OACTIO(PRSI),0)) RETURN
  942. XC                        !YES, LET IT HANDLE.
  943. XC
  944. X100    IF(PRSO.EQ.0) GO TO 200
  945. XC                        !DIR OBJECT?
  946. X    IF(OAPPLI(OACTIO(PRSO),0)) RETURN
  947. XC                        !YES, LET IT HANDLE.
  948. XC
  949. X200    OBJACT=.FALSE.
  950. XC                        !LOSES.
  951. X    RETURN
  952. X    END
  953. X#ifndef PDP
  954. XC BUG-- REPORT FATAL SYSTEM ERROR
  955. XC
  956. XC CALLED BY--
  957. XC
  958. XC    CALL BUG(NO,PAR)
  959. XC
  960. X    SUBROUTINE BUG(A,B)
  961. X    IMPLICIT INTEGER(A-Z)
  962. X#include "debug.h"
  963. XC
  964. X    PRINT 100,A,B
  965. X    IF(DBGFLG.NE.0) RETURN
  966. X    CALL EXIT
  967. XC
  968. X100    FORMAT(' PROGRAM ERROR ',I2,', PARAMETER=',I6)
  969. X    END
  970. X#endif PDP
  971. XC NEWSTA-- SET NEW STATUS FOR OBJECT
  972. XC
  973. XC CALLED BY--
  974. XC
  975. XC    CALL NEWSTA(OBJECT,STRING,NEWROOM,NEWCON,NEWADV)
  976. XC
  977. X    SUBROUTINE NEWSTA(O,R,RM,CN,AD)
  978. X    IMPLICIT INTEGER(A-Z)
  979. X#include "objects.h"
  980. XC
  981. X    CALL RSPEAK(R)
  982. X    OROOM(O)=RM
  983. X    OCAN(O)=CN
  984. X    OADV(O)=AD
  985. X    RETURN
  986. X    END
  987. XC QHERE-- TEST FOR OBJECT IN ROOM
  988. XC
  989. XC DECLARATIONS
  990. XC
  991. X    LOGICAL FUNCTION QHERE(OBJ,RM)
  992. X    IMPLICIT INTEGER (A-Z)
  993. X#include "objects.h"
  994. XC
  995. X    QHERE=.TRUE.
  996. X    IF(OROOM(OBJ).EQ.RM) RETURN
  997. XC                        !IN ROOM?
  998. X    DO 100 I=1,R2LNT
  999. XC                        !NO, SCH ROOM2.
  1000. X      IF((OROOM2(I).EQ.OBJ).AND.(RROOM2(I).EQ.RM)) RETURN
  1001. X100    CONTINUE
  1002. X    QHERE=.FALSE.
  1003. XC                        !NOT PRESENT.
  1004. X    RETURN
  1005. X    END
  1006. XC QEMPTY-- TEST FOR OBJECT EMPTY
  1007. XC
  1008. XC DECLARATIONS
  1009. XC
  1010. X    LOGICAL FUNCTION QEMPTY(OBJ)
  1011. X    IMPLICIT INTEGER (A-Z)
  1012. X#include "objects.h"
  1013. XC
  1014. X    QEMPTY=.FALSE.
  1015. XC                        !ASSUME LOSE.
  1016. X    DO 100 I=1,OLNT
  1017. X      IF(OCAN(I).EQ.OBJ) RETURN
  1018. XC                        !INSIDE TARGET?
  1019. X100    CONTINUE
  1020. X    QEMPTY=.TRUE.
  1021. X    RETURN
  1022. X    END
  1023. XC JIGSUP- YOU ARE DEAD
  1024. XC
  1025. XC DECLARATIONS
  1026. XC
  1027. X    SUBROUTINE JIGSUP(DESC)
  1028. X    IMPLICIT INTEGER (A-Z)
  1029. X    LOGICAL YESNO,MOVETO,QHERE,F
  1030. X    INTEGER RLIST(9)
  1031. X#include "parser.h"
  1032. X#include "gamestate.h"
  1033. X#include "state.h"
  1034. X#include "io.h"
  1035. X#include "debug.h"
  1036. X#include "rooms.h"
  1037. X#include "rflag.h"
  1038. X#include "rindex.h"
  1039. X#include "objects.h"
  1040. X#include "oflags.h"
  1041. X#include "oindex.h"
  1042. X#include "advers.h"
  1043. X#include "flags.h"
  1044. XC
  1045. XC FUNCTIONS AND DATA
  1046. XC
  1047. X    DATA RLIST/8,6,36,35,34,4,34,6,5/
  1048. XC JIGSUP, PAGE 2
  1049. XC
  1050. X    CALL RSPEAK(DESC)
  1051. XC                        !DESCRIBE SAD STATE.
  1052. X    PRSCON=1
  1053. XC                        !STOP PARSER.
  1054. X    IF(DBGFLG.NE.0) RETURN
  1055. XC                        !IF DBG, EXIT.
  1056. X    AVEHIC(WINNER)=0
  1057. XC                        !GET RID OF VEHICLE.
  1058. X    IF(WINNER.EQ.PLAYER) GO TO 100
  1059. XC                        !HIMSELF?
  1060. X    CALL RSPSUB(432,ODESC2(AOBJ(WINNER)))
  1061. XC                        !NO, SAY WHO DIED.
  1062. X    CALL NEWSTA(AOBJ(WINNER),0,0,0,0)
  1063. XC                        !SEND TO HYPER SPACE.
  1064. X    RETURN
  1065. XC
  1066. X100    IF(ENDGMF) GO TO 900
  1067. XC                        !NO RECOVERY IN END GAME.
  1068. X    IF(DEATHS.GE.2) GO TO 1000
  1069. XC                        !DEAD TWICE? KICK HIM OFF.
  1070. X    IF(.NOT.YESNO(10,9,8)) GO TO 1100
  1071. XC                        !CONTINUE?
  1072. XC
  1073. X    DO 50 J=1,OLNT
  1074. XC                        !TURN OFF FIGHTING.
  1075. X      IF(QHERE(J,HERE))   OFLAG2(J)=and(OFLAG2(J),not(FITEBT))
  1076. X50    CONTINUE
  1077. XC
  1078. X    DEATHS=DEATHS+1
  1079. X    CALL SCRUPD(-10)
  1080. XC                        !CHARGE TEN POINTS.
  1081. X    F=MOVETO(FORE1,WINNER)
  1082. XC                        !REPOSITION HIM.
  1083. X    EGYPTF=.TRUE.
  1084. XC                        !RESTORE COFFIN.
  1085. X    IF(OADV(COFFI).EQ.WINNER) CALL NEWSTA(COFFI,0,EGYPT,0,0)
  1086. X    OFLAG2(DOOR)=and(OFLAG2(DOOR),not(TCHBT))
  1087. X    OFLAG1(ROBOT)=and(or(OFLAG1(ROBOT),VISIBT),not(NDSCBT))
  1088. X    IF((OROOM(LAMP).NE.0).OR.(OADV(LAMP).EQ.WINNER))
  1089. X&        CALL NEWSTA(LAMP,0,LROOM,0,0)
  1090. XC
  1091. XC NOW REDISTRIBUTE HIS VALUABLES AND OTHER BELONGINGS.
  1092. XC
  1093. XC THE LAMP HAS BEEN PLACED IN THE LIVING ROOM.
  1094. XC THE FIRST 8 NON-VALUABLES ARE PLACED IN LOCATIONS AROUND THE HOUSE.
  1095. XC HIS VALUABLES ARE PLACED AT THE END OF THE MAZE.
  1096. XC REMAINING NON-VALUABLES ARE PLACED AT THE END OF THE MAZE.
  1097. XC
  1098. X    I=1
  1099. X    DO 200 J=1,OLNT
  1100. XC                        !LOOP THRU OBJECTS.
  1101. X      IF((OADV(J).NE.WINNER).OR.(OTVAL(J).NE.0))
  1102. X&        GO TO 200
  1103. X      I=I+1
  1104. X      IF(I.GT.9) GO TO 400
  1105. XC                        !MOVE TO RANDOM LOCATIONS.
  1106. X      CALL NEWSTA(J,0,RLIST(I),0,0)
  1107. X200    CONTINUE
  1108. XC
  1109. X400    I=RLNT+1
  1110. XC                        !NOW MOVE VALUABLES.
  1111. X    NONOFL=RAIR+RWATER+RSACRD+REND
  1112. XC                        !DONT MOVE HERE.
  1113. X    DO 300 J=1,OLNT
  1114. X      IF((OADV(J).NE.WINNER).OR.(OTVAL(J).EQ.0))
  1115. X&        GO TO 300
  1116. X250      I=I-1
  1117. XC                        !FIND NEXT ROOM.
  1118. X      IF(and(RFLAG(I),NONOFL).NE.0) GO TO 250
  1119. X      CALL NEWSTA(J,0,I,0,0)
  1120. XC                        !YES, MOVE.
  1121. X300    CONTINUE
  1122. XC
  1123. X    DO 500 J=1,OLNT
  1124. XC                        !NOW GET RID OF REMAINDER.
  1125. X      IF(OADV(J).NE.WINNER) GO TO 500
  1126. X450      I=I-1
  1127. XC                        !FIND NEXT ROOM.
  1128. X      IF(and(RFLAG(I),NONOFL).NE.0) GO TO 450
  1129. X      CALL NEWSTA(J,0,I,0,0)
  1130. X500    CONTINUE
  1131. X    RETURN
  1132. XC
  1133. XC CAN'T OR WON'T CONTINUE, CLEAN UP AND EXIT.
  1134. XC
  1135. X900    CALL RSPEAK(625)
  1136. XC                        !IN ENDGAME, LOSE.
  1137. X    GO TO 1100
  1138. XC
  1139. X1000    CALL RSPEAK(7)
  1140. XC                        !INVOLUNTARY EXIT.
  1141. X1100    CALL SCORE(.FALSE.)
  1142. XC                        !TELL SCORE.
  1143. X#ifdef PDP
  1144. XC    file closed in exit routine
  1145. X#else
  1146. X    CLOSE(DBCH)
  1147. X#endif PDP
  1148. X    CALL EXIT
  1149. XC
  1150. X    END
  1151. XC OACTOR-    GET ACTOR ASSOCIATED WITH OBJECT
  1152. XC
  1153. XC DECLARATIONS
  1154. XC
  1155. X    INTEGER FUNCTION OACTOR(OBJ)
  1156. X    IMPLICIT INTEGER(A-Z)
  1157. X#include "advers.h"
  1158. XC
  1159. X    DO 100 I=1,ALNT
  1160. XC                        !LOOP THRU ACTORS.
  1161. X      OACTOR=I
  1162. XC                        !ASSUME FOUND.
  1163. X      IF(AOBJ(I).EQ.OBJ) RETURN
  1164. XC                        !FOUND IT?
  1165. X100    CONTINUE
  1166. X    CALL BUG(40,OBJ)
  1167. XC                        !NO, DIE.
  1168. X    RETURN
  1169. X    END
  1170. XC PROB-        COMPUTE PROBABILITY
  1171. XC
  1172. XC DECLARATIONS
  1173. XC
  1174. X    LOGICAL FUNCTION PROB(G,B)
  1175. X    IMPLICIT INTEGER(A-Z)
  1176. X#include "flags.h"
  1177. XC
  1178. X    I=G
  1179. XC                        !ASSUME GOOD LUCK.
  1180. X    IF(BADLKF) I=B
  1181. XC                        !IF BAD, TOO BAD.
  1182. X    PROB=RND(100).LT.I
  1183. XC                        !COMPUTE.
  1184. X    RETURN
  1185. X    END
  1186. XC RMDESC-- PRINT ROOM DESCRIPTION
  1187. XC
  1188. XC RMDESC PRINTS A DESCRIPTION OF THE CURRENT ROOM.
  1189. XC IT IS ALSO THE PROCESSOR FOR VERBS 'LOOK' AND 'EXAMINE'.
  1190. XC
  1191. X    LOGICAL FUNCTION RMDESC(FULL)
  1192. XC
  1193. XC FULL=    0/1/2/3=    SHORT/OBJ/ROOM/FULL
  1194. XC
  1195. XC DECLARATIONS
  1196. XC
  1197. X    IMPLICIT INTEGER (A-Z)
  1198. X    LOGICAL PROB,LIT,RAPPLI
  1199. X#include "parser.h"
  1200. X#include "gamestate.h"
  1201. X#include "screen.h"
  1202. X#include "rooms.h"
  1203. X#include "rflag.h"
  1204. X#include "xsrch.h"
  1205. X#include "objects.h"
  1206. X#include "advers.h"
  1207. X#include "verbs.h"
  1208. X#include "flags.h"
  1209. XC RMDESC, PAGE 2
  1210. XC
  1211. X    RMDESC=.TRUE.
  1212. XC                        !ASSUME WINS.
  1213. X    IF(PRSO.LT.XMIN) GO TO 50
  1214. XC                        !IF DIRECTION,
  1215. X    FROMDR=PRSO
  1216. XC                        !SAVE AND
  1217. X    PRSO=0
  1218. XC                        !CLEAR.
  1219. X50    IF(HERE.EQ.AROOM(PLAYER)) GO TO 100
  1220. XC                        !PLAYER JUST MOVE?
  1221. X    CALL RSPEAK(2)
  1222. XC                        !NO, JUST SAY DONE.
  1223. X    PRSA=WALKIW
  1224. XC                        !SET UP WALK IN ACTION.
  1225. X    RETURN
  1226. XC
  1227. X100    IF(LIT(HERE)) GO TO 300
  1228. XC                        !LIT?
  1229. X    CALL RSPEAK(430)
  1230. XC                        !WARN OF GRUE.
  1231. X    RMDESC=.FALSE.
  1232. X    RETURN
  1233. XC
  1234. X300    RA=RACTIO(HERE)
  1235. XC                        !GET ROOM ACTION.
  1236. X    IF(FULL.EQ.1) GO TO 600
  1237. XC                        !OBJ ONLY?
  1238. X    I=RDESC2-HERE
  1239. XC                        !ASSUME SHORT DESC.
  1240. X    IF((FULL.EQ.0)
  1241. X&        .AND.(SUPERF.OR.(((and(RFLAG(HERE),RSEEN)).NE.0)
  1242. X&                .AND.(BRIEFF.OR.PROB(80,80)))))       GO TO 400
  1243. X    I=RDESC1(HERE)
  1244. XC                        !USE LONG.
  1245. X    IF((I.NE.0).OR.(RA.EQ.0)) GO TO 400
  1246. XC                        !IF GOT DESC, SKIP.
  1247. X    PRSA=LOOKW
  1248. XC                        !PRETEND LOOK AROUND.
  1249. X    IF(.NOT.RAPPLI(RA)) GO TO 100
  1250. XC                        !ROOM HANDLES, NEW DESC?
  1251. X    PRSA=FOOW
  1252. XC                        !NOP PARSER.
  1253. X    GO TO 500
  1254. XC
  1255. X400    CALL RSPEAK(I)
  1256. XC                        !OUTPUT DESCRIPTION.
  1257. X500    IF(AVEHIC(WINNER).NE.0) CALL RSPSUB(431,ODESC2(AVEHIC(WINNER)))
  1258. XC
  1259. X600    IF(FULL.NE.2) CALL PRINCR(FULL.NE.0,HERE)
  1260. X    RFLAG(HERE)=or(RFLAG(HERE),RSEEN)
  1261. X    IF((FULL.NE.0).OR.(RA.EQ.0)) RETURN
  1262. XC                        !ANYTHING MORE?
  1263. X    PRSA=WALKIW
  1264. XC                        !GIVE HIM A SURPISE.
  1265. X    IF(.NOT.RAPPLI(RA)) GO TO 100
  1266. XC                        !ROOM HANDLES, NEW DESC?
  1267. X    PRSA=FOOW
  1268. X    RETURN
  1269. XC
  1270. X    END
  1271. XC RAPPLI-    ROUTING ROUTINE FOR ROOM APPLICABLES
  1272. XC
  1273. XC DECLARATIONS
  1274. XC
  1275. X    LOGICAL FUNCTION RAPPLI(RI)
  1276. X    IMPLICIT INTEGER(A-Z)
  1277. X    LOGICAL RAPPL1,RAPPL2
  1278. X    DATA NEWRMS/38/
  1279. XC
  1280. X    RAPPLI=.TRUE.
  1281. XC                        !ASSUME WINS.
  1282. X    IF(RI.EQ.0) RETURN
  1283. XC                        !IF ZERO, WIN.
  1284. X    IF(RI.LT.NEWRMS) RAPPLI=RAPPL1(RI)
  1285. XC                        !IF OLD, PROCESSOR 1.
  1286. X    IF(RI.GE.NEWRMS) RAPPLI=RAPPL2(RI)
  1287. XC                        !IF NEW, PROCESSOR 2.
  1288. X    RETURN
  1289. X    END
  1290. END_OF_dsub.F
  1291. if test 10390 -ne `wc -c <dsub.F`; then
  1292.     echo shar: \"dsub.F\" unpacked with wrong size!
  1293. fi
  1294. # end of overwriting check
  1295. fi
  1296. if test -f dungeon.6 -a "${1}" != "-c" ; then 
  1297.   echo shar: Will not over-write existing file \"dungeon.6\"
  1298. else
  1299. echo shar: Extracting \"dungeon.6\" \(8989 characters\)
  1300. sed "s/^X//" >dungeon.6 <<'END_OF_dungeon.6'
  1301. X.TH DUNGEON 6 "February 9, 1987"
  1302. X.SH NAME
  1303. Xdungeon\ -\ Adventures in the Dungeons of Doom
  1304. X.SH SYNOPSIS
  1305. X.B dungeon
  1306. X.br
  1307. X.B dungeon
  1308. X[-r [savefile]]\ \ \ --\ pdp-11 version only
  1309. X.SH DESCRIPTION
  1310. XDungeon is a game of adventure, danger, and low cunning.  In it
  1311. Xyou will explore some of the most amazing territory ever seen by mortal
  1312. Xman.  Hardened adventurers have run screaming from the terrors contained
  1313. Xwithin.
  1314. X.LP
  1315. XIn Dungeon, the intrepid explorer delves into the forgotten secrets
  1316. Xof a lost labyrinth deep in the bowels of the earth, searching for
  1317. Xvast treasures long hidden from prying eyes, treasures guarded by
  1318. Xfearsome monsters and diabolical traps!
  1319. X.LP
  1320. XDungeon was created at the Programming Technology Division of the MIT
  1321. XLaboratory for Computer Science by Tim Anderson, Marc Blank, Bruce
  1322. XDaniels, and Dave Lebling.  It was inspired by the Adventure game of
  1323. XCrowther and Woods, and the Dungeons and Dragons game of Gygax
  1324. Xand Arneson.  The original version was written in MDL (alias MUDDLE).
  1325. XThe current version was translated from MDL into FORTRAN IV by
  1326. Xa somewhat paranoid DEC engineer who prefers to remain anonymous.
  1327. X.LP
  1328. XOn-line information may be obtained with the commands HELP and INFO.
  1329. X.SH OPTIONS
  1330. XIn the pdp-11 version, the
  1331. X.B -r
  1332. Xflag allows restarting a saved game.  The default savefile is
  1333. X.I dungeon.sav
  1334. Xwhich may be overriden on the command line.  In the Vax version,
  1335. Xthe game is restored by using the
  1336. X.B restore
  1337. Xcommand.
  1338. X.SH DETAILS
  1339. XFollowing, is the summary produced by the
  1340. X.B info
  1341. Xcommand:
  1342. X.RS
  1343. X.LP
  1344. XWelcome to Dungeon!
  1345. X.PP
  1346. XYou are near a large dungeon, which is reputed to contain vast
  1347. Xquantities of treasure.   Naturally, you wish to acquire some of it.
  1348. XIn order to do so, you must of course remove it from the dungeon.  To
  1349. Xreceive full credit for it, you must deposit it safely in the trophy
  1350. Xcase in the living room of the house.
  1351. X.PP
  1352. XIn addition to valuables, the dungeon contains various objects
  1353. Xwhich may or may not be useful in your attempt to get rich.  You may
  1354. Xneed sources of light, since dungeons are often dark, and weapons,
  1355. Xsince dungeons often have unfriendly things wandering about.  Reading
  1356. Xmaterial is scattered around the dungeon as well;  some of it
  1357. Xis rumored to be useful.
  1358. X.PP
  1359. XTo determine how successful you have been, a score is kept.
  1360. XWhen you find a valuable object and pick it up, you receive a
  1361. Xcertain number of points, which depends on the difficulty of finding
  1362. Xthe object.  You receive extra points for transporting the treasure
  1363. Xsafely to the living room and placing it in the trophy case.  In
  1364. Xaddition, some particularly interesting rooms have a value associated
  1365. Xwith visiting them.  The only penalty is for getting yourself killed,
  1366. Xwhich you may do only twice.
  1367. X.PP
  1368. XOf special note is a thief (always carrying a large bag) who
  1369. Xlikes to wander around in the dungeon (he has never been seen by the
  1370. Xlight of day).  He likes to take things.  Since he steals for pleasure
  1371. Xrather than profit and is somewhat sadistic, he only takes things which
  1372. Xyou have seen.  Although he prefers valuables, sometimes in his haste
  1373. Xhe may take something which is worthless.  From time to time, he examines
  1374. Xhis take and discards objects which he doesn't like.  He may occasionally 
  1375. Xstop in a room you are visiting, but more often he just wanders
  1376. Xthrough and rips you off (he is a skilled pickpocket).
  1377. X.RE
  1378. X.SH COMMANDS
  1379. X.LP
  1380. X.TP 15
  1381. X.B brief
  1382. Xsuppresses printing of long room descriptions
  1383. Xfor rooms which have been visited.
  1384. X.TP
  1385. X.B superbrief
  1386. Xsuppresses
  1387. Xprinting of long room descriptions for all rooms.
  1388. X.TP
  1389. X.B verbose
  1390. Xrestores long descriptions.
  1391. X.TP
  1392. X.B info
  1393. Xprints information which might give some idea
  1394. Xof what the game is about.
  1395. X.TP
  1396. X.B quit
  1397. Xprints your score and asks whether you wish
  1398. Xto continue playing.
  1399. X.TP
  1400. X.B save
  1401. Xsaves the state of the game for later continuation.
  1402. X.TP
  1403. X.B restore
  1404. Xrestores a saved game.
  1405. X.TP
  1406. X.B inventory
  1407. Xlists the objects in your possession.
  1408. X.TP
  1409. X.B look
  1410. Xprints a description of your surroundings.
  1411. X.TP
  1412. X.B score
  1413. Xprints your current score and ranking.
  1414. X.TP
  1415. X.B time
  1416. Xtells you how long you have been playing.
  1417. X.TP
  1418. X.B diagnose
  1419. Xreports on your injuries, if any.
  1420. X.LP
  1421. XThe
  1422. X.B inventory
  1423. Xcommand may be abbreviated
  1424. X.BR i ;
  1425. Xthe
  1426. X.B look
  1427. Xcommand may be abbreviated
  1428. X.BR l ;
  1429. Xthe
  1430. X.B quit
  1431. Xcommand may be abbreviated
  1432. X.BR q .
  1433. X.LP
  1434. XA command that begins with '!' as the first character is taken to
  1435. Xbe a shell command and is passed unchanged to the shell via
  1436. X.I system(3).
  1437. X.SH CONTAINMENT
  1438. X.LP
  1439. XSome objects can contain other objects.  Many such containers can
  1440. Xbe opened and closed.  The rest are always open.   They may or may
  1441. Xnot be transparent.  For you to access (e.g., take) an object
  1442. Xwhich is in a container, the container must be open.  For you
  1443. Xto see such an object, the container must be either open or
  1444. Xtransparent.  Containers have a capacity, and objects have sizes;
  1445. Xthe number of objects which will fit therefore depends on their
  1446. Xsizes.  You may put any object you have access to (it need not be
  1447. Xin your hands) into any other object.  At some point, the program
  1448. Xwill attempt to pick it up if you don't already have it, which
  1449. Xprocess may fail if you're carrying too much.  Although containers
  1450. Xcan contain other containers, the program doesn't access more than
  1451. Xone level down.
  1452. X.SH FIGHTING
  1453. X.LP
  1454. XOccupants of the dungeon will, as a rule, fight back when
  1455. Xattacked.  In some cases, they may attack even if unprovoked.
  1456. XUseful verbs here are 
  1457. X.I attack
  1458. X<villain>
  1459. X.I with
  1460. X<weapon>,
  1461. X.IR kill ,
  1462. Xetc.  Knife-throwing may or may not be useful.  You have a
  1463. Xfighting strength which varies with time.  Being in a fight,
  1464. Xgetting killed, and being injured all lower this strength.
  1465. XStrength is regained with time.  Thus, it is not a good idea to
  1466. Xfight someone immediately after being killed.  Other details
  1467. Xshould become apparent after a few melees or deaths.
  1468. X.SH COMMAND\ PARSER
  1469. X.LP
  1470. XA command is one line of text terminated by a carriage return.
  1471. XFor reasons of simplicity, all words are distinguished by their
  1472. Xfirst six letters.  All others are ignored.  For example, typing
  1473. X.I disassemble the encyclopedia
  1474. Xis not only meaningless, it also
  1475. Xcreates excess effort for your fingers.  Note that this truncation
  1476. Xmay produce ambiguities in the intepretation of longer words.
  1477. X[Also note that upper and lower case are equivalent.]
  1478. X.LP
  1479. XYou are dealing with a fairly stupid parser, which understands
  1480. Xthe following types of things:
  1481. X.RS
  1482. X.TP 5
  1483. X.B Actions:
  1484. XAmong the more obvious of these, such as
  1485. X.I take, put, drop,
  1486. Xetc.
  1487. XFairly general forms of these may be used, such as
  1488. X.I pick up, put down,
  1489. Xetc.
  1490. X.TP
  1491. X.B Directions:
  1492. X.I north, south, up, down,
  1493. Xetc. and their various abbreviations.
  1494. XOther more obscure directions
  1495. X.RI ( land,
  1496. X.IR cross )
  1497. Xare appropriate in only certain situations.
  1498. X.TP
  1499. X.B Objects:
  1500. XMost objects have names and can be referenced by them.
  1501. X.TP
  1502. X.B Adjectives:
  1503. XSome adjectives are understood and required when there are
  1504. Xtwo objects which can be referenced with the same 'name' (e.g.,
  1505. X.I doors,
  1506. X.IR buttons ).
  1507. X.TP
  1508. X.B Prepositions:
  1509. XIt may be necessary in some cases to include prepositions, but
  1510. Xthe parser attempts to handle cases which aren't ambiguous
  1511. Xwithout.  Thus
  1512. X.I give car to demon
  1513. Xwill work, as will
  1514. X.I give demon
  1515. X.IR car .
  1516. X.I give car demon
  1517. Xprobably won't do anything interesting.
  1518. XWhen a preposition is used, it should be appropriate;
  1519. X.I give car with demon
  1520. Xwon't parse.
  1521. X.TP
  1522. X.B Sentences:
  1523. XThe parser understands a reasonable number of syntactic construc-
  1524. Xtions.  In particular, multiple commands (separated by commas)
  1525. Xcan be placed on the same line.
  1526. X.TP
  1527. X.B Ambiguity:
  1528. XThe parser tries to be clever about what to do in the case of
  1529. Xactions which require objects that are not explicitly specified.
  1530. XIf there is only one possible object, the parser will assume
  1531. Xthat it should be used.  Otherwise, the parser will ask.
  1532. XMost questions asked by the parser can be answered.
  1533. X.RE
  1534. X.SH FILES
  1535. Xdindx.dat    - game initialization info
  1536. X.br
  1537. Xdtext.dat        - encoded messages
  1538. X.br
  1539. Xrindx.dat        - index into message file for pdp version
  1540. X.br
  1541. Xdungeon.sav    - default save file for pdp version
  1542. X.br
  1543. Xdsave.dat    - default save file for non-pdp versions
  1544. X.br
  1545. Xlisten, speak    - co-process routines for pdp version
  1546. X.SH BUGS
  1547. XFor those familiar with the MDL version of the game on the ARPAnet,
  1548. Xthe following is a list of the major incompatabilties:
  1549. X.RS
  1550. X-The first six letters of a word are considered
  1551. Xsignificant, instead of the first five.
  1552. X.br
  1553. X-The syntax for
  1554. X.I tell, answer,
  1555. Xand
  1556. X.I incant
  1557. Xis different.
  1558. X.br
  1559. X-Compound objects are not recognized.
  1560. X.br
  1561. X-Compound commands can be delimited with comma as well
  1562. Xas period.
  1563. X.RE
  1564. X.LP
  1565. XAlso, the palantir, brochure, and dead man problems are not
  1566. Ximplemented.
  1567. X.LP
  1568. XThe pdp version is slightly stripped down to fit within the memory
  1569. Xcontraints.
  1570. XAn overlayed pdp version might be made that would allow the
  1571. Xcomplete game to be compiled and loaded, but I don't have the
  1572. Xinclination (or machine) to do it.
  1573. X.SH AUTHORS
  1574. X.LP
  1575. XMany people have had a hand in this version.  See the "History" and
  1576. X"README" files for credits.  Send bug reports to billr@tekred.TEK.COM
  1577. X(or ...!tektronix!tekred!billr).
  1578. END_OF_dungeon.6
  1579. if test 8989 -ne `wc -c <dungeon.6`; then
  1580.     echo shar: \"dungeon.6\" unpacked with wrong size!
  1581. fi
  1582. # end of overwriting check
  1583. fi
  1584. if test -f np3.F -a "${1}" != "-c" ; then 
  1585.   echo shar: Will not over-write existing file \"np3.F\"
  1586. else
  1587. echo shar: Extracting \"np3.F\" \(7518 characters\)
  1588. sed "s/^X//" >np3.F <<'END_OF_np3.F'
  1589. XC SYNMCH--    SYNTAX MATCHER
  1590. XC
  1591. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  1592. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  1593. XC WRITTEN BY R. M. SUPNIK
  1594. XC
  1595. XC DECLARATIONS
  1596. XC
  1597. XC THIS ROUTINE DETAILS ON BIT 4 OF PRSFLG
  1598. XC
  1599. X    LOGICAL FUNCTION SYNMCH()
  1600. X    IMPLICIT INTEGER(A-Z)
  1601. X    LOGICAL SYNEQL,TAKEIT
  1602. X#include "parser.h"
  1603. X#include "vocab.h"
  1604. X#include "debug.h"
  1605. XC
  1606. XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
  1607. XC
  1608. XC    DATA R50MIN/1RA/
  1609. XC
  1610. X    DATA R50MIN/1600/
  1611. XC
  1612. X    SYNMCH=.FALSE.
  1613. X#ifdef debug
  1614. X    DFLAG=and(PRSFLG, 16).NE.0
  1615. X    write(0,*) "synflags=",sdir,sind,sstd,sflip,sdriv,svmask
  1616. X#endif
  1617. X    J=ACT
  1618. XC                        !SET UP PTR TO SYNTAX.
  1619. X    DRIVE=0
  1620. XC                        !NO DEFAULT.
  1621. X    DFORCE=0
  1622. XC                        !NO FORCED DEFAULT.
  1623. X    QPREP=and(OFLAG,OPREP)
  1624. X100    J=J+2
  1625. XC                        !FIND START OF SYNTAX.
  1626. X    IF((VVOC(J).LE.0).OR.(VVOC(J).GE.R50MIN)) GO TO 100
  1627. X    LIMIT=J+VVOC(J)+1
  1628. XC                        !COMPUTE LIMIT.
  1629. X    J=J+1
  1630. XC                        !ADVANCE TO NEXT.
  1631. XC
  1632. X200    CALL UNPACK(J,NEWJ)
  1633. XC                        !UNPACK SYNTAX.
  1634. X#ifdef debug
  1635. X    IF(DFLAG) PRINT 60,O1,P1,DOBJ,DFL1,DFL2
  1636. X60    FORMAT(' SYNMCH INPUTS TO SYNEQL- ',5I7)
  1637. X#endif
  1638. X    SPREP=and(DOBJ,VPMASK)
  1639. X    IF(.NOT.SYNEQL(P1,O1,DOBJ,DFL1,DFL2)) GO TO 1000
  1640. X#ifdef debug
  1641. X    IF(DFLAG) PRINT 60,O2,P2,IOBJ,IFL1,IFL2
  1642. X#endif
  1643. X    SPREP=and(IOBJ,VPMASK)
  1644. X    IF(SYNEQL(P2,O2,IOBJ,IFL1,IFL2)) GO TO 6000
  1645. XC
  1646. XC SYNTAX MATCH FAILS, TRY NEXT ONE.
  1647. XC
  1648. X    IF(O2) 3000,500,3000
  1649. XC                        !IF O2=0, SET DFLT.
  1650. X1000    IF(O1) 3000,500,3000
  1651. XC                        !IF O1=0, SET DFLT.
  1652. X500    IF((QPREP.EQ.0).OR.(QPREP.EQ.SPREP)) DFORCE=J
  1653. XC                        !IF PREP MCH.
  1654. X    IF((and(VFLAG,SDRIV)).NE.0) DRIVE=J
  1655. X3000    J=NEWJ
  1656. X    IF(J.LT.LIMIT) GO TO 200
  1657. XC                        !MORE TO DO?
  1658. XC SYNMCH, PAGE 2
  1659. XC
  1660. XC MATCH HAS FAILED.  IF DEFAULT SYNTAX EXISTS, TRY TO SNARF
  1661. XC ORPHANS OR GWIMS, OR MAKE NEW ORPHANS.
  1662. XC
  1663. X#ifdef debug
  1664. X    IF(DFLAG) PRINT 20,DRIVE,DFORCE
  1665. X20    FORMAT(' SYNMCH, DRIVE=',2I6)
  1666. X#endif
  1667. X    IF(DRIVE.EQ.0) DRIVE=DFORCE
  1668. XC                        !NO DRIVER? USE FORCE.
  1669. X    IF(DRIVE.EQ.0) GO TO 10000
  1670. XC                        !ANY DRIVER?
  1671. X    CALL UNPACK(DRIVE,DFORCE)
  1672. XC                        !UNPACK DFLT SYNTAX.
  1673. XC
  1674. XC TRY TO FILL DIRECT OBJECT SLOT IF THAT WAS THE PROBLEM.
  1675. XC
  1676. X    IF((and(VFLAG,SDIR).EQ.0).OR.(O1.NE.0)) GO TO 4000
  1677. XC
  1678. XC FIRST TRY TO SNARF ORPHAN OBJECT.
  1679. XC
  1680. X    O1=and(OFLAG,OSLOT)
  1681. X    IF(O1.EQ.0) GO TO 3500
  1682. XC                        !ANY ORPHAN?
  1683. X    IF(SYNEQL(P1,O1,DOBJ,DFL1,DFL2)) GO TO 4000
  1684. XC
  1685. XC ORPHAN FAILS, TRY GWIM.
  1686. XC
  1687. X3500    O1=GWIM(DOBJ,DFW1,DFW2)
  1688. XC                        !GET GWIM.
  1689. X#ifdef debug
  1690. X    IF(DFLAG) PRINT 30,O1
  1691. X30    FORMAT(' SYNMCH- DO GWIM= ',I6)
  1692. X#endif debug
  1693. X    IF(O1.GT.0) GO TO 4000
  1694. XC                        !TEST RESULT.
  1695. X    CALL ORPHAN(-1,ACT,0,and(DOBJ,VPMASK),0)
  1696. X    CALL RSPEAK(623)
  1697. X    RETURN
  1698. XC
  1699. XC TRY TO FILL INDIRECT OBJECT SLOT IF THAT WAS THE PROBLEM.
  1700. XC
  1701. X4000    IF((and(VFLAG,SIND).EQ.0).OR.(O2.NE.0)) GO TO 6000
  1702. X    O2=GWIM(IOBJ,IFW1,IFW2)
  1703. XC                        !GWIM.
  1704. X#ifdef debug
  1705. X    IF(DFLAG) PRINT 40,O2
  1706. X40    FORMAT(' SYNMCH- IO GWIM= ',I6)
  1707. X#endif debug
  1708. X    IF(O2.GT.0) GO TO 6000
  1709. X    IF(O1.EQ.0) O1=and(OFLAG,OSLOT)
  1710. X    CALL ORPHAN(-1,ACT,O1,and(DOBJ,VPMASK),0)
  1711. X    CALL RSPEAK(624)
  1712. X    RETURN
  1713. XC
  1714. XC TOTAL CHOMP
  1715. XC
  1716. X10000    CALL RSPEAK(601)
  1717. XC                        !CANT DO ANYTHING.
  1718. X    RETURN
  1719. XC SYNMCH, PAGE 3
  1720. XC
  1721. XC NOW TRY TO TAKE INDIVIDUAL OBJECTS AND
  1722. XC IN GENERAL CLEAN UP THE PARSE VECTOR.
  1723. XC
  1724. X6000    IF(and(VFLAG,SFLIP).EQ.0) GO TO 5000
  1725. X    J=O1
  1726. XC                        !YES.
  1727. X    O1=O2
  1728. X    O2=J
  1729. XC
  1730. X5000    PRSA=and(VFLAG,SVMASK)
  1731. X    PRSO=O1
  1732. XC                        !GET DIR OBJ.
  1733. X    PRSI=O2
  1734. XC                        !GET IND OBJ.
  1735. X    IF(.NOT.TAKEIT(PRSO,DOBJ)) RETURN
  1736. XC                        !TRY TAKE.
  1737. X    IF(.NOT.TAKEIT(PRSI,IOBJ)) RETURN
  1738. XC                        !TRY TAKE.
  1739. X    SYNMCH=.TRUE.
  1740. X#ifdef debug
  1741. X    IF(DFLAG) PRINT 50,SYNMCH,PRSA,PRSO,PRSI,ACT,O1,O2
  1742. X50    FORMAT(' SYNMCH- RESULTS ',L1,6I7)
  1743. X#endif
  1744. X    RETURN
  1745. XC
  1746. X    END
  1747. XC UNPACK-    UNPACK SYNTAX SPECIFICATION, ADV POINTER
  1748. XC
  1749. XC DECLARATIONS
  1750. XC
  1751. X    SUBROUTINE UNPACK(OLDJ,J)
  1752. X    IMPLICIT INTEGER(A-Z)
  1753. X#include "vocab.h"
  1754. X#include "parser.h"
  1755. XC
  1756. X    DO 10 I=1,11
  1757. XC                        !CLEAR SYNTAX.
  1758. X      SYN(I)=0
  1759. X10    CONTINUE
  1760. XC
  1761. X    VFLAG=VVOC(OLDJ)
  1762. X    J=OLDJ+1
  1763. X    IF(and(VFLAG,SDIR).EQ.0) RETURN
  1764. X    DFL1=-1
  1765. XC                        !ASSUME STD.
  1766. X    DFL2=-1
  1767. X    IF(and(VFLAG,SSTD).EQ.0) GO TO 100
  1768. X    DFW1=-1
  1769. XC                        !YES.
  1770. X    DFW2=-1
  1771. X    DOBJ=VABIT+VRBIT+VFBIT
  1772. X    GO TO 200
  1773. XC
  1774. X100    DOBJ=VVOC(J)
  1775. XC                        !NOT STD.
  1776. X    DFW1=VVOC(J+1)
  1777. X    DFW2=VVOC(J+2)
  1778. X    J=J+3
  1779. X    IF(and(DOBJ,VEBIT).EQ.0) GO TO 200
  1780. X    DFL1=DFW1
  1781. XC                        !YES.
  1782. X    DFL2=DFW2
  1783. XC
  1784. X200    IF(and(VFLAG,SIND).EQ.0) RETURN
  1785. X    IFL1=-1
  1786. XC                        !ASSUME STD.
  1787. X    IFL2=-1
  1788. X    IOBJ=VVOC(J)
  1789. X    IFW1=VVOC(J+1)
  1790. X    IFW2=VVOC(J+2)
  1791. X    J=J+3
  1792. X    IF(and(IOBJ,VEBIT).EQ.0) RETURN
  1793. X    IFL1=IFW1
  1794. XC                        !YES.
  1795. X    IFL2=IFW2
  1796. X    RETURN
  1797. XC
  1798. X    END
  1799. XC SYNEQL-    TEST FOR SYNTAX EQUALITY
  1800. XC
  1801. XC DECLARATIONS
  1802. XC
  1803. X    LOGICAL FUNCTION SYNEQL(PREP,OBJ,SPREP,SFL1,SFL2)
  1804. X    IMPLICIT INTEGER(A-Z)
  1805. X#include "objects.h"
  1806. X#include "parser.h"
  1807. XC
  1808. X    IF(OBJ.EQ.0) GO TO 100
  1809. XC                        !ANY OBJECT?
  1810. X    SYNEQL=(PREP.EQ.and(SPREP,VPMASK)).AND.
  1811. X&        (or(and(SFL1,OFLAG1(OBJ)),
  1812. X&          and(SFL2,OFLAG2(OBJ))).NE.0)
  1813. X    RETURN
  1814. XC
  1815. X100    SYNEQL=(PREP.EQ.0).AND.(SFL1.EQ.0).AND.(SFL2.EQ.0)
  1816. X    RETURN
  1817. XC
  1818. X    END
  1819. XC TAKEIT-    PARSER BASED TAKE OF OBJECT
  1820. XC
  1821. XC DECLARATIONS
  1822. XC
  1823. X    LOGICAL FUNCTION TAKEIT(OBJ,SFLAG)
  1824. X    IMPLICIT INTEGER(A-Z)
  1825. X#include "parser.h"
  1826. X    COMMON /STAR/ MBASE,STRBIT
  1827. X#include "gamestate.h"
  1828. X#include "state.h"
  1829. X#include "objects.h"
  1830. X#include "oflags.h"
  1831. X#include "advers.h"
  1832. XC TAKEIT, PAGE 2
  1833. XC
  1834. X    TAKEIT=.FALSE.
  1835. XC                        !ASSUME LOSES.
  1836. X    IF((OBJ.EQ.0).OR.(OBJ.GT.STRBIT)) GO TO 4000
  1837. XC                        !NULL/STARS WIN.
  1838. X    ODO2=ODESC2(OBJ)
  1839. XC                        !GET DESC.
  1840. X    X=OCAN(OBJ)
  1841. XC                        !GET CONTAINER.
  1842. X    IF((X.EQ.0).OR.(and(SFLAG,VFBIT).EQ.0)) GO TO 500
  1843. X    IF(and(OFLAG2(X),OPENBT).NE.0) GO TO 500
  1844. X    CALL RSPSUB(566,ODO2)
  1845. XC                        !CANT REACH.
  1846. X    RETURN
  1847. XC
  1848. X500    IF(and(SFLAG,VRBIT).EQ.0) GO TO 1000
  1849. X    IF(and(SFLAG,VTBIT).EQ.0) GO TO 2000
  1850. XC
  1851. XC SHOULD BE IN ROOM (VRBIT NE 0) AND CAN BE TAKEN (VTBIT NE 0)
  1852. XC
  1853. X    IF(SCHLST(0,0,HERE,0,0,OBJ).LE.0) GO TO 4000
  1854. XC                        !IF NOT, OK.
  1855. XC
  1856. XC ITS IN THE ROOM AND CAN BE TAKEN.
  1857. XC
  1858. X    IF((and(OFLAG1(OBJ),TAKEBT).NE.0).AND.
  1859. X&        (and(OFLAG2(OBJ),TRYBT).EQ.0)) GO TO 3000
  1860. XC
  1861. XC NOT TAKEABLE.  IF WE CARE, FAIL.
  1862. XC
  1863. X    IF(and(SFLAG,VCBIT).EQ.0) GO TO 4000
  1864. X    CALL RSPSUB(445,ODO2)
  1865. X    RETURN
  1866. XC
  1867. XC 1000--    IT SHOULD NOT BE IN THE ROOM.
  1868. XC 2000--    IT CANT BE TAKEN.
  1869. XC
  1870. X2000    IF(and(SFLAG,VCBIT).EQ.0) GO TO 4000
  1871. X1000    IF(SCHLST(0,0,HERE,0,0,OBJ).LE.0) GO TO 4000
  1872. X    CALL RSPSUB(665,ODO2)
  1873. X    RETURN
  1874. XC TAKEIT, PAGE 3
  1875. XC
  1876. XC OBJECT IS IN THE ROOM, CAN BE TAKEN BY THE PARSER,
  1877. XC AND IS TAKEABLE IN GENERAL.  IT IS NOT A STAR.
  1878. XC TAKING IT SHOULD NOT HAVE SIDE AFFECTS.
  1879. XC IF IT IS INSIDE SOMETHING, THE CONTAINER IS OPEN.
  1880. XC THE FOLLOWING CODE IS LIFTED FROM SUBROUTINE TAKE.
  1881. XC
  1882. X3000    IF(OBJ.NE.AVEHIC(WINNER)) GO TO 3500
  1883. XC                        !TAKE VEHICLE?
  1884. X    CALL RSPEAK(672)
  1885. X    RETURN
  1886. XC
  1887. X3500    IF(((X.NE.0).AND.(OADV(X).EQ.WINNER)).OR.
  1888. X&     ((WEIGHT(0,OBJ,WINNER)+OSIZE(OBJ)).LE.MXLOAD))
  1889. X&     GO TO 3700
  1890. X    CALL RSPEAK(558)
  1891. XC                        !TOO BIG.
  1892. X    RETURN
  1893. XC
  1894. X3700    CALL NEWSTA(OBJ,559,0,0,WINNER)
  1895. XC                        !DO TAKE.
  1896. X    OFLAG2(OBJ)=or(OFLAG2(OBJ),TCHBT)
  1897. X    CALL SCRUPD(OFVAL(OBJ))
  1898. X    OFVAL(OBJ)=0
  1899. XC
  1900. X4000    TAKEIT=.TRUE.
  1901. XC                        !SUCCESS.
  1902. X    RETURN
  1903. XC
  1904. X    END
  1905. XC
  1906. XC GWIM- GET WHAT I MEAN IN AMBIGOUS SITUATIONS
  1907. XC
  1908. XC DECLARATIONS
  1909. XC
  1910. X    INTEGER FUNCTION GWIM(SFLAG,SFW1,SFW2)
  1911. X    IMPLICIT INTEGER(A-Z)
  1912. X    LOGICAL TAKEIT,NOCARE
  1913. X#include "parser.h"
  1914. X    COMMON /STAR/ MBASE,STRBIT
  1915. X#include "gamestate.h"
  1916. X#include "objects.h"
  1917. X#include "oflags.h"
  1918. X#include "advers.h"
  1919. XC GWIM, PAGE 2
  1920. XC
  1921. X    GWIM=-1
  1922. XC                        !ASSUME LOSE.
  1923. X    AV=AVEHIC(WINNER)
  1924. X    NOBJ=0
  1925. X    NOCARE=and(SFLAG,VCBIT).EQ.0
  1926. XC
  1927. XC FIRST SEARCH ADVENTURER
  1928. XC
  1929. X    IF(and(SFLAG,VABIT).NE.0)
  1930. X&        NOBJ=FWIM(SFW1,SFW2,0,0,WINNER,NOCARE)
  1931. X    IF(and(SFLAG,VRBIT).NE.0) GO TO 100
  1932. X50    GWIM=NOBJ
  1933. X    RETURN
  1934. XC
  1935. XC ALSO SEARCH ROOM
  1936. XC
  1937. X100    ROBJ=FWIM(SFW1,SFW2,HERE,0,0,NOCARE)
  1938. X    IF(ROBJ) 500,50,200
  1939. XC                        !TEST RESULT.
  1940. XC
  1941. XC ROBJ > 0
  1942. XC
  1943. X200    IF((AV.EQ.0).OR.(ROBJ.EQ.AV).OR.
  1944. X&        (and(OFLAG2(ROBJ),FINDBT).NE.0)) GO TO 300
  1945. X    IF(OCAN(ROBJ).NE.AV) GO TO 50
  1946. XC                        !UNREACHABLE? TRY NOBJ
  1947. X300    IF(NOBJ.NE.0) RETURN
  1948. XC                        !IF AMBIGUOUS, RETURN.
  1949. X    IF(.NOT.TAKEIT(ROBJ,SFLAG)) RETURN
  1950. XC                        !IF UNTAKEABLE, RETURN
  1951. X    GWIM=ROBJ
  1952. X500    RETURN
  1953. XC
  1954. X    END
  1955. END_OF_np3.F
  1956. if test 7518 -ne `wc -c <np3.F`; then
  1957.     echo shar: \"np3.F\" unpacked with wrong size!
  1958. fi
  1959. # end of overwriting check
  1960. fi
  1961. if test -f objects.h -a "${1}" != "-c" ; then 
  1962.   echo shar: Will not over-write existing file \"objects.h\"
  1963. else
  1964. echo shar: Extracting \"objects.h\" \(302 characters\)
  1965. sed "s/^X//" >objects.h <<'END_OF_objects.h'
  1966. XC
  1967. XC OBJECTS
  1968. XC
  1969. X    COMMON /OBJCTS/ OLNT,ODESC1(220),ODESC2(220),ODESCO(220),
  1970. X&        OACTIO(220),OFLAG1(220),OFLAG2(220),OFVAL(220),
  1971. X&        OTVAL(220),OSIZE(220),OCAPAC(220),OROOM(220),
  1972. X&        OADV(220),OCAN(220),OREAD(220)
  1973. X    INTEGER EQO(220,14)
  1974. X    EQUIVALENCE (ODESC1, EQO)
  1975. XC
  1976. X    COMMON /OROOM2/ R2LNT,OROOM2(20),RROOM2(20)
  1977. END_OF_objects.h
  1978. if test 302 -ne `wc -c <objects.h`; then
  1979.     echo shar: \"objects.h\" unpacked with wrong size!
  1980. fi
  1981. # end of overwriting check
  1982. fi
  1983. if test -f rtext.dat -a "${1}" != "-c" ; then 
  1984.   echo shar: Will not over-write existing file \"rtext.dat\"
  1985. else
  1986. echo shar: Extracting \"rtext.dat\" \(9450 characters\)
  1987. sed "s/^X//" >rtext.dat <<'END_OF_rtext.dat'
  1988. X      -1
  1989. X      -2
  1990. X      -3
  1991. X     -14
  1992. X    -115
  1993. X    -148
  1994. X    -149
  1995. X    -153
  1996. X    -155
  1997. X    -158
  1998. X    -159
  1999. X    -161
  2000. X    -162
  2001. X    -163
  2002. X    -167
  2003. X    -170
  2004. X    -173
  2005. X    -174
  2006. X    -175
  2007. X    -176
  2008. X    -177
  2009. X    -180
  2010. X    -181
  2011. X    -183
  2012. X    -184
  2013. X    -185
  2014. X    -186
  2015. X    -188
  2016. X    -189
  2017. X    -190
  2018. X    -191
  2019. X    -192
  2020. X    -195
  2021. X    -197
  2022. X    -200
  2023. X    -202
  2024. X    -203
  2025. X    -206
  2026. X    -207
  2027. X    -209
  2028. X    -210
  2029. X    -211
  2030. X    -214
  2031. X    -216
  2032. X    -217
  2033. X    -224
  2034. X    -225
  2035. X    -226
  2036. X    -227
  2037. X    -229
  2038. X    -231
  2039. X    -234
  2040. X    -236
  2041. X    -237
  2042. X    -242
  2043. X    -244
  2044. X    -245
  2045. X    -246
  2046. X    -249
  2047. X    -256
  2048. X    -258
  2049. X    -261
  2050. X    -262
  2051. X    -265
  2052. X    -271
  2053. X    -273
  2054. X    -276
  2055. X    -279
  2056. X    -282
  2057. X    -284
  2058. X    -285
  2059. X    -286
  2060. X    -287
  2061. X    -288
  2062. X    -289
  2063. X    -290
  2064. X    -291
  2065. X    -292
  2066. X    -293
  2067. X    -294
  2068. X    -295
  2069. X    -296
  2070. X    -298
  2071. X    -300
  2072. X    -301
  2073. X    -303
  2074. X    -304
  2075. X    -305
  2076. X    -306
  2077. X    -307
  2078. X    -308
  2079. X    -309
  2080. X    -310
  2081. X    -311
  2082. X    -312
  2083. X    -313
  2084. X    -316
  2085. X    -317
  2086. X    -318
  2087. X    -322
  2088. X    -325
  2089. X    -326
  2090. X    -327
  2091. X    -328
  2092. X    -330
  2093. X    -333
  2094. X    -334
  2095. X    -336
  2096. X    -337
  2097. X    -338
  2098. X    -339
  2099. X    -340
  2100. X    -341
  2101. X    -344
  2102. X    -345
  2103. X    -348
  2104. X    -350
  2105. X    -352
  2106. X    -356
  2107. X    -363
  2108. X    -369
  2109. X    -370
  2110. X    -372
  2111. X    -373
  2112. X    -374
  2113. X    -375
  2114. X    -376
  2115. X    -377
  2116. X    -379
  2117. X    -380
  2118. X    -381
  2119. X    -382
  2120. X    -383
  2121. X    -384
  2122. X    -385
  2123. X    -386
  2124. X    -387
  2125. X    -388
  2126. X    -389
  2127. X    -390
  2128. X    -391
  2129. X    -392
  2130. X    -393
  2131. X    -395
  2132. X    -396
  2133. X    -398
  2134. X    -400
  2135. X    -401
  2136. X    -402
  2137. X    -404
  2138. X    -406
  2139. X    -407
  2140. X    -408
  2141. X    -409
  2142. X    -410
  2143. X    -411
  2144. X    -412
  2145. X    -413
  2146. X    -414
  2147. X    -416
  2148. X    -418
  2149. X    -422
  2150. X    -426
  2151. X    -427
  2152. X    -428
  2153. X    -429
  2154. X    -430
  2155. X    -432
  2156. X    -433
  2157. X    -437
  2158. X    -439
  2159. X    -440
  2160. X    -441
  2161. X    -442
  2162. X    -443
  2163. X    -444
  2164. X    -445
  2165. X    -446
  2166. X    -447
  2167. X    -448
  2168. X    -449
  2169. X    -450
  2170. X    -452
  2171. X    -453
  2172. X    -454
  2173. X    -455
  2174. X    -456
  2175. X    -457
  2176. X    -459
  2177. X    -462
  2178. X    -464
  2179. X    -466
  2180. X    -467
  2181. X    -468
  2182. X    -469
  2183. X    -470
  2184. X    -471
  2185. X    -473
  2186. X    -474
  2187. X    -475
  2188. X    -477
  2189. X    -478
  2190. X    -479
  2191. X    -480
  2192. X    -482
  2193. X    -484
  2194. X    -485
  2195. X    -486
  2196. X    -487
  2197. X    -488
  2198. X    -489
  2199. X    -490
  2200. X    -491
  2201. X    -492
  2202. X    -493
  2203. X    -494
  2204. X    -495
  2205. X    -496
  2206. X    -498
  2207. X    -499
  2208. X    -500
  2209. X    -501
  2210. X    -502
  2211. X    -503
  2212. X    -504
  2213. X    -505
  2214. X    -508
  2215. X    -509
  2216. X    -510
  2217. X    -512
  2218. X    -513
  2219. X    -514
  2220. X    -515
  2221. X    -518
  2222. X    -519
  2223. X    -520
  2224. X    -521
  2225. X    -522
  2226. X    -523
  2227. X    -524
  2228. X    -525
  2229. X    -526
  2230. X    -527
  2231. X    -528
  2232. X    -529
  2233. X    -530
  2234. X    -532
  2235. X    -535
  2236. X    -536
  2237. X    -537
  2238. X    -538
  2239. X    -539
  2240. X    -540
  2241. X    -541
  2242. X    -542
  2243. X    -543
  2244. X    -544
  2245. X    -549
  2246. X    -551
  2247. X    -552
  2248. X    -555
  2249. X    -558
  2250. X    -560
  2251. X    -563
  2252. X    -567
  2253. X    -568
  2254. X    -569
  2255. X    -570
  2256. X    -571
  2257. X    -572
  2258. X    -573
  2259. X    -574
  2260. X    -576
  2261. X    -577
  2262. X    -579
  2263. X    -580
  2264. X    -581
  2265. X    -582
  2266. X    -583
  2267. X    -584
  2268. X    -585
  2269. X    -588
  2270. X    -589
  2271. X    -590
  2272. X    -593
  2273. X    -595
  2274. X    -596
  2275. X    -597
  2276. X    -602
  2277. X    -604
  2278. X    -605
  2279. X    -606
  2280. X    -608
  2281. X    -609
  2282. X    -612
  2283. X    -614
  2284. X    -615
  2285. X    -616
  2286. X    -617
  2287. X    -618
  2288. X    -619
  2289. X    -620
  2290. X    -622
  2291. X    -623
  2292. X    -625
  2293. X    -626
  2294. X    -627
  2295. X    -628
  2296. X    -629
  2297. X    -630
  2298. X    -631
  2299. X    -632
  2300. X    -633
  2301. X    -634
  2302. X    -635
  2303. X    -636
  2304. X    -637
  2305. X    -638
  2306. X    -639
  2307. X    -640
  2308. X    -641
  2309. X    -642
  2310. X    -643
  2311. X    -644
  2312. X    -645
  2313. X    -646
  2314. X    -647
  2315. X    -648
  2316. X    -649
  2317. X    -650
  2318. X    -651
  2319. X    -652
  2320. X    -653
  2321. X    -654
  2322. X    -655
  2323. X    -658
  2324. X    -659
  2325. X    -661
  2326. X    -662
  2327. X    -663
  2328. X    -664
  2329. X    -665
  2330. X    -666
  2331. X    -667
  2332. X    -668
  2333. X    -669
  2334. X    -670
  2335. X    -671
  2336. X    -672
  2337. X    -673
  2338. X    -674
  2339. X    -675
  2340. X    -676
  2341. X    -677
  2342. X    -678
  2343. X    -679
  2344. X    -680
  2345. X    -681
  2346. X    -682
  2347. X    -683
  2348. X    -684
  2349. X    -685
  2350. X    -686
  2351. X    -688
  2352. X    -689
  2353. X    -692
  2354. X    -693
  2355. X    -694
  2356. X    -695
  2357. X    -696
  2358. X    -697
  2359. X    -698
  2360. X    -699
  2361. X    -700
  2362. X    -701
  2363. X    -702
  2364. X    -703
  2365. X    -704
  2366. X    -705
  2367. X    -706
  2368. X    -707
  2369. X    -708
  2370. X    -709
  2371. X    -710
  2372. X    -711
  2373. X    -712
  2374. X    -713
  2375. X    -714
  2376. X    -715
  2377. X    -716
  2378. X    -717
  2379. X    -718
  2380. X    -719
  2381. X    -720
  2382. X    -721
  2383. X    -722
  2384. X    -723
  2385. X    -724
  2386. X    -725
  2387. X    -726
  2388. X    -727
  2389. X    -728
  2390. X    -729
  2391. X    -730
  2392. X    -731
  2393. X    -732
  2394. X    -733
  2395. X    -734
  2396. X    -735
  2397. X    -736
  2398. X    -737
  2399. X    -738
  2400. X    -739
  2401. X    -740
  2402. X    -741
  2403. X    -742
  2404. X    -743
  2405. X    -744
  2406. X    -745
  2407. X    -746
  2408. X    -747
  2409. X    -748
  2410. X    -749
  2411. X    -750
  2412. X    -751
  2413. X    -753
  2414. X    -754
  2415. X    -755
  2416. X    -756
  2417. X    -757
  2418. X    -758
  2419. X    -759
  2420. X    -760
  2421. X    -762
  2422. X    -764
  2423. X    -766
  2424. X    -768
  2425. X    -769
  2426. X    -770
  2427. X    -771
  2428. X    -772
  2429. X    -773
  2430. X    -774
  2431. X    -777
  2432. X    -778
  2433. X    -779
  2434. X    -780
  2435. X    -781
  2436. X    -782
  2437. X    -783
  2438. X    -784
  2439. X    -785
  2440. X    -786
  2441. X    -787
  2442. X    -788
  2443. X    -789
  2444. X    -790
  2445. X    -791
  2446. X    -793
  2447. X    -794
  2448. X    -795
  2449. X    -796
  2450. X    -797
  2451. X    -798
  2452. X    -799
  2453. X    -800
  2454. X    -801
  2455. X    -802
  2456. X    -803
  2457. X    -804
  2458. X    -805
  2459. X    -806
  2460. X    -807
  2461. X    -808
  2462. X    -809
  2463. X    -810
  2464. X    -811
  2465. X    -812
  2466. X    -813
  2467. X    -814
  2468. X    -815
  2469. X    -816
  2470. X    -817
  2471. X    -818
  2472. X    -819
  2473. X    -820
  2474. X    -821
  2475. X    -822
  2476. X    -823
  2477. X    -824
  2478. X    -825
  2479. X    -826
  2480. X    -827
  2481. X    -828
  2482. X    -829
  2483. X    -830
  2484. X    -831
  2485. X    -832
  2486. X    -834
  2487. X    -836
  2488. X    -837
  2489. X    -839
  2490. X    -840
  2491. X    -842
  2492. X    -844
  2493. X    -846
  2494. X    -847
  2495. X    -850
  2496. X    -851
  2497. X    -853
  2498. X    -854
  2499. X    -856
  2500. X    -857
  2501. X    -858
  2502. X    -859
  2503. X    -861
  2504. X    -862
  2505. X    -863
  2506. X    -864
  2507. X    -865
  2508. X    -866
  2509. X    -867
  2510. X    -868
  2511. X    -869
  2512. X    -870
  2513. X    -871
  2514. X    -872
  2515. X    -873
  2516. X    -874
  2517. X    -875
  2518. X    -876
  2519. X    -877
  2520. X    -878
  2521. X    -879
  2522. X    -880
  2523. X    -881
  2524. X    -883
  2525. X    -884
  2526. X    -885
  2527. X    -887
  2528. X    -888
  2529. X    -889
  2530. X    -890
  2531. X    -891
  2532. X    -893
  2533. X    -894
  2534. X    -895
  2535. X    -896
  2536. X    -897
  2537. X    -898
  2538. X    -899
  2539. X    -900
  2540. X    -901
  2541. X    -902
  2542. X    -903
  2543. X    -904
  2544. X    -905
  2545. X    -906
  2546. X    -907
  2547. X    -908
  2548. X    -909
  2549. X    -910
  2550. X    -911
  2551. X    -912
  2552. X    -913
  2553. X    -914
  2554. X    -915
  2555. X    -916
  2556. X    -917
  2557. X    -918
  2558. X    -919
  2559. X    -921
  2560. X    -924
  2561. X    -925
  2562. X    -926
  2563. X    -927
  2564. X    -928
  2565. X    -930
  2566. X    -931
  2567. X    -932
  2568. X    -933
  2569. X    -934
  2570. X    -935
  2571. X    -938
  2572. X    -941
  2573. X    -943
  2574. X    -945
  2575. X    -949
  2576. X    -951
  2577. X    -953
  2578. X    -955
  2579. X    -957
  2580. X    -958
  2581. X    -959
  2582. X    -960
  2583. X    -961
  2584. X    -963
  2585. X    -964
  2586. X    -965
  2587. X    -966
  2588. X    -967
  2589. X    -968
  2590. X    -969
  2591. X    -970
  2592. X    -971
  2593. X    -972
  2594. X    -974
  2595. X    -978
  2596. X    -981
  2597. X    -983
  2598. X    -985
  2599. X    -987
  2600. X    -988
  2601. X    -989
  2602. X    -990
  2603. X    -991
  2604. X    -992
  2605. X    -993
  2606. X    -994
  2607. X    -995
  2608. X    -996
  2609. X    -997
  2610. X    -998
  2611. X    -999
  2612. X   -1000
  2613. X   -1003
  2614. X   -1005
  2615. X   -1007
  2616. X   -1008
  2617. X   -1009
  2618. X   -1010
  2619. X   -1011
  2620. X   -1012
  2621. X   -1013
  2622. X   -1014
  2623. X   -1015
  2624. X   -1019
  2625. X   -1025
  2626. X   -1028
  2627. X   -1029
  2628. X   -1030
  2629. X   -1033
  2630. X   -1037
  2631. X   -1039
  2632. X   -1040
  2633. X   -1041
  2634. X   -1042
  2635. X   -1048
  2636. X   -1049
  2637. X   -1050
  2638. X   -1051
  2639. X   -1052
  2640. X   -1054
  2641. X   -1055
  2642. X   -1056
  2643. X   -1058
  2644. X   -1059
  2645. X   -1060
  2646. X   -1061
  2647. X   -1062
  2648. X   -1064
  2649. X   -1065
  2650. X   -1066
  2651. X   -1067
  2652. X   -1068
  2653. X   -1069
  2654. X   -1070
  2655. X   -1071
  2656. X   -1072
  2657. X   -1073
  2658. X   -1074
  2659. X   -1075
  2660. X   -1076
  2661. X   -1077
  2662. X   -1078
  2663. X   -1079
  2664. X   -1080
  2665. X   -1081
  2666. X   -1082
  2667. X   -1083
  2668. X   -1084
  2669. X   -1088
  2670. X   -1093
  2671. X   -1098
  2672. X   -1099
  2673. X   -1101
  2674. X   -1102
  2675. X   -1103
  2676. X   -1125
  2677. X   -1127
  2678. X   -1129
  2679. X   -1132
  2680. X   -1134
  2681. X   -1136
  2682. X   -1141
  2683. X   -1142
  2684. X   -1143
  2685. X   -1144
  2686. X   -1145
  2687. X   -1146
  2688. X   -1147
  2689. X   -1148
  2690. X   -1149
  2691. X   -1152
  2692. X   -1156
  2693. X   -1161
  2694. X   -1164
  2695. X   -1166
  2696. X   -1168
  2697. X   -1169
  2698. X   -1171
  2699. X   -1176
  2700. X   -1187
  2701. X   -1188
  2702. X   -1189
  2703. X   -1190
  2704. X   -1191
  2705. X   -1192
  2706. X   -1193
  2707. X   -1194
  2708. X   -1195
  2709. X   -1198
  2710. X   -1200
  2711. X   -1201
  2712. X   -1204
  2713. X   -1208
  2714. X   -1218
  2715. X   -1229
  2716. X   -1230
  2717. X   -1231
  2718. X   -1232
  2719. X   -1233
  2720. X   -1234
  2721. X   -1235
  2722. X   -1236
  2723. X   -1237
  2724. X   -1238
  2725. X   -1239
  2726. X   -1241
  2727. X   -1242
  2728. X   -1243
  2729. X   -1244
  2730. X   -1246
  2731. X   -1250
  2732. X   -1252
  2733. X   -1255
  2734. X   -1256
  2735. X   -1260
  2736. X   -1261
  2737. X   -1262
  2738. X   -1263
  2739. X   -1264
  2740. X   -1265
  2741. X   -1266
  2742. X   -1267
  2743. X   -1268
  2744. X   -1269
  2745. X   -1270
  2746. X   -1271
  2747. X   -1272
  2748. X   -1273
  2749. X   -1274
  2750. X   -1275
  2751. X   -1276
  2752. X   -1277
  2753. X   -1278
  2754. X   -1280
  2755. X   -1281
  2756. X   -1296
  2757. X   -1297
  2758. X   -1299
  2759. X   -1300
  2760. X   -1302
  2761. X   -1303
  2762. X   -1304
  2763. X   -1305
  2764. X   -1306
  2765. X   -1307
  2766. X   -1308
  2767. X   -1309
  2768. X   -1310
  2769. X   -1311
  2770. X   -1312
  2771. X   -1313
  2772. X   -1314
  2773. X   -1315
  2774. X   -1316
  2775. X   -1317
  2776. X   -1318
  2777. X   -1319
  2778. X   -1320
  2779. X   -1321
  2780. X   -1329
  2781. X   -1330
  2782. X   -1331
  2783. X   -1332
  2784. X   -1333
  2785. X   -1334
  2786. X   -1335
  2787. X   -1336
  2788. X   -1337
  2789. X   -1338
  2790. X   -1339
  2791. X   -1340
  2792. X   -1341
  2793. X   -1342
  2794. X   -1343
  2795. X   -1344
  2796. X   -1345
  2797. X   -1346
  2798. X   -1347
  2799. X   -1348
  2800. X   -1349
  2801. X   -1350
  2802. X   -1351
  2803. X   -1352
  2804. X   -1353
  2805. X   -1354
  2806. X   -1355
  2807. X   -1356
  2808. X   -1357
  2809. X   -1359
  2810. X   -1361
  2811. X   -1362
  2812. X   -1363
  2813. X   -1364
  2814. X   -1368
  2815. X   -1371
  2816. X   -1372
  2817. X   -1373
  2818. X   -1374
  2819. X   -1375
  2820. X   -1376
  2821. X   -1377
  2822. X   -1378
  2823. X   -1379
  2824. X   -1382
  2825. X   -1383
  2826. X   -1384
  2827. X   -1385
  2828. X   -1386
  2829. X   -1387
  2830. X   -1389
  2831. X   -1390
  2832. X   -1391
  2833. X   -1392
  2834. X   -1393
  2835. X   -1394
  2836. X   -1395
  2837. X   -1396
  2838. X   -1397
  2839. X   -1398
  2840. X   -1399
  2841. X   -1400
  2842. X   -1401
  2843. X   -1402
  2844. X   -1403
  2845. X   -1404
  2846. X   -1405
  2847. X   -1407
  2848. X   -1408
  2849. X   -1409
  2850. X   -1410
  2851. X   -1414
  2852. X   -1417
  2853. X   -1418
  2854. X   -1419
  2855. X   -1420
  2856. X   -1422
  2857. X   -1423
  2858. X   -1424
  2859. X   -1425
  2860. X   -1427
  2861. X   -1429
  2862. X   -1430
  2863. X   -1431
  2864. X   -1432
  2865. X   -1433
  2866. X   -1442
  2867. X   -1443
  2868. X   -1444
  2869. X   -1445
  2870. X   -1446
  2871. X   -1447
  2872. X   -1449
  2873. X   -1450
  2874. X   -1451
  2875. X   -1452
  2876. X   -1453
  2877. X   -1454
  2878. X   -1455
  2879. X   -1456
  2880. X   -1457
  2881. X   -1458
  2882. X   -1459
  2883. X   -1460
  2884. X   -1461
  2885. X   -1462
  2886. X   -1463
  2887. X   -1464
  2888. X   -1465
  2889. X   -1466
  2890. X   -1467
  2891. X   -1468
  2892. X   -1469
  2893. X   -1470
  2894. X   -1471
  2895. X   -1472
  2896. X   -1473
  2897. X   -1474
  2898. X   -1475
  2899. X   -1476
  2900. X   -1477
  2901. X   -1478
  2902. X   -1479
  2903. X   -1480
  2904. X   -1481
  2905. X   -1482
  2906. X   -1483
  2907. X   -1484
  2908. X   -1485
  2909. X   -1486
  2910. X   -1487
  2911. X   -1488
  2912. X   -1489
  2913. X   -1490
  2914. X   -1491
  2915. X   -1492
  2916. X   -1493
  2917. X   -1494
  2918. X   -1495
  2919. X   -1496
  2920. X   -1497
  2921. X   -1498
  2922. X   -1499
  2923. X   -1500
  2924. X   -1501
  2925. X   -1502
  2926. X   -1503
  2927. X   -1504
  2928. X   -1505
  2929. X   -1506
  2930. X   -1507
  2931. X   -1509
  2932. X   -1510
  2933. X   -1511
  2934. X   -1512
  2935. X   -1513
  2936. X   -1514
  2937. X   -1515
  2938. X   -1517
  2939. X   -1519
  2940. X   -1520
  2941. X   -1521
  2942. X   -1522
  2943. X   -1524
  2944. X   -1526
  2945. X   -1527
  2946. X   -1528
  2947. X   -1529
  2948. X   -1530
  2949. X   -1531
  2950. X   -1532
  2951. X   -1533
  2952. X   -1534
  2953. X   -1536
  2954. X   -1537
  2955. X   -1538
  2956. X   -1539
  2957. X   -1540
  2958. X   -1541
  2959. X   -1542
  2960. X   -1543
  2961. X   -1544
  2962. X   -1545
  2963. X   -1546
  2964. X   -1547
  2965. X   -1549
  2966. X   -1550
  2967. X   -1552
  2968. X   -1553
  2969. X   -1554
  2970. X   -1555
  2971. X   -1556
  2972. X   -1557
  2973. X   -1558
  2974. X   -1559
  2975. X   -1560
  2976. X   -1562
  2977. X   -1563
  2978. X   -1564
  2979. X   -1565
  2980. X   -1566
  2981. X   -1568
  2982. X   -1569
  2983. X   -1571
  2984. X   -1572
  2985. X   -1573
  2986. X   -1574
  2987. X   -1576
  2988. X   -1578
  2989. X   -1580
  2990. X   -1581
  2991. X   -1583
  2992. X   -1585
  2993. X   -1586
  2994. X   -1587
  2995. X   -1589
  2996. X   -1591
  2997. X   -1592
  2998. X   -1594
  2999. X   -1596
  3000. X   -1597
  3001. X   -1599
  3002. X   -1601
  3003. X   -1602
  3004. X   -1604
  3005. X   -1606
  3006. X   -1607
  3007. X   -1608
  3008. X   -1609
  3009. X   -1611
  3010. X       0
  3011. X       0
  3012. X       0
  3013. X       0
  3014. X       0
  3015. X       0
  3016. X       0
  3017. X       0
  3018. X       0
  3019. X       0
  3020. X       0
  3021. X       0
  3022. X       0
  3023. X       0
  3024. X       0
  3025. X       0
  3026. X       0
  3027. X       0
  3028. X       0
  3029. X       0
  3030. X       0
  3031. X       0
  3032. X       0
  3033. X       0
  3034. X       0
  3035. X       0
  3036. X       0
  3037. X       0
  3038. END_OF_rtext.dat
  3039. if test 9450 -ne `wc -c <rtext.dat`; then
  3040.     echo shar: \"rtext.dat\" unpacked with wrong size!
  3041. fi
  3042. # end of overwriting check
  3043. fi
  3044. echo shar: End of archive 5 \(of 7\).
  3045. cp /dev/null ark5isdone
  3046. MISSING=""
  3047. for I in 1 2 3 4 5 6 7 ; do
  3048.     if test ! -f ark${I}isdone ; then
  3049.     MISSING="${MISSING} ${I}"
  3050.     fi
  3051. done
  3052. if test "${MISSING}" = "" ; then
  3053.     echo You have unpacked all 7 archives.
  3054.     rm -f ark[1-9]isdone
  3055. else
  3056.     echo You still need to unpack the following archives:
  3057.     echo "        " ${MISSING}
  3058. fi
  3059. ##  End of shell archive.
  3060. exit 0
  3061.